org.springframework.jdbc.core.namedparam

## Interface SqlParameterSource

- All Known Implementing Classes:
    AbstractSqlParameterSource, BeanPropertySqlParameterSource, EmptySqlParameterSource, MapSqlParameterSource

      public interface SqlParameterSource

  Interface that defines common functionality for objects that can offer parameter values for named SQL parameters, serving as argument for `NamedParameterJdbcTemplate` operations.

  This interface allows for the specification of SQL type in addition to parameter values. All parameter values and types are identified by specifying the name of the parameter.

  Intended to wrap various implementations like a Map or a JavaBean with a consistent interface.

  Since:
    2.0
  Author:
    Thomas Risberg, Juergen Hoeller
  See Also:
    `NamedParameterJdbcOperations`, `NamedParameterJdbcTemplate`, `MapSqlParameterSource`, `BeanPropertySqlParameterSource`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `TYPE_UNKNOWN` Constant that indicates an unknown (or unspecified) SQL type.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `default String[]` | `getParameterNames()` Enumerate all available parameter names if possible.
    `default int` | `getSqlType(String paramName)` Determine the SQL type for the specified named parameter.
    `default String` | `getTypeName(String paramName)` Determine the type name for the specified named parameter.
    `Object` | `getValue(String paramName)` Return the parameter value for the requested named parameter.
    `boolean` | `hasValue(String paramName)` Determine whether there is a value for the specified named parameter.

- - ### Field Detail

    - #### TYPE_UNKNOWN

          static final int TYPE_UNKNOWN

      Constant that indicates an unknown (or unspecified) SQL type. To be returned from `getType` when no specific SQL type known.
      See Also:
        `getSqlType(java.lang.String)`, `Types`, Constant Field Values

  - ### Method Detail

    - #### hasValue

          boolean hasValue(String paramName)

      Determine whether there is a value for the specified named parameter.
      Parameters:
        `paramName` - the name of the parameter
      Returns:
        whether there is a value defined

    - #### getValue

          @Nullable
          Object getValue(String paramName)
                             throws IllegalArgumentException

      Return the parameter value for the requested named parameter.
      Parameters:
        `paramName` - the name of the parameter
      Returns:
        the value of the specified parameter
      Throws:
        `IllegalArgumentException` - if there is no value for the requested parameter

    - #### getSqlType

          default int getSqlType(String paramName)

      Determine the SQL type for the specified named parameter.
      Parameters:
        `paramName` - the name of the parameter
      Returns:
        the SQL type of the specified parameter, or `TYPE_UNKNOWN` if not known
      See Also:
        `TYPE_UNKNOWN`

    - #### getTypeName

          @Nullable
          default String getTypeName(String paramName)

      Determine the type name for the specified named parameter.
      Parameters:
        `paramName` - the name of the parameter
      Returns:
        the type name of the specified parameter, or `null` if not known

    - #### getParameterNames

          @Nullable
          default String[] getParameterNames()

      Enumerate all available parameter names if possible.

      This is an optional operation, primarily for use with `SimpleJdbcInsert` and `SimpleJdbcCall`.

      Returns:
        the array of parameter names, or `null` if not determinable
      Since:
        5.0.3
      See Also:
        `SqlParameterSourceUtils.extractCaseInsensitiveParameterNames(org.springframework.jdbc.core.namedparam.SqlParameterSource)`