AbstractSqlTypeValue (Spring Framework 3.2.1.RELEASE API)
Date: 2013-01-24

org.springframework.jdbc.core.support

## Class AbstractSqlTypeValue

- java.lang.Object
- - org.springframework.jdbc.core.support.AbstractSqlTypeValue

- All Implemented Interfaces:
    SqlTypeValue

      public abstract class AbstractSqlTypeValue
      extends Object
      implements SqlTypeValue

  Abstract implementation of the SqlTypeValue interface, for convenient creation of type values that are supposed to be passed into the `PreparedStatement.setObject` method. The `createTypeValue` callback method has access to the underlying Connection, if that should be needed to create any database-specific objects.

  A usage example from a StoredProcedure (compare this to the plain SqlTypeValue version in the superclass javadoc):

      proc.declareParameter(new SqlParameter("myarray", Types.ARRAY, "NUMBERS"));
       ...

       Map<String, Object> in = new HashMap<String, Object>();
       in.put("myarray", new AbstractSqlTypeValue() {
         public Object createTypeValue(Connection con, int sqlType, String typeName) throws SQLException {
                 oracle.sql.ArrayDescriptor desc = new oracle.sql.ArrayDescriptor(typeName, con);
                 return new oracle.sql.ARRAY(desc, con, seats);
         }
       });
       Map out = execute(in);

  Since:
    1.1
  Author:
    Juergen Hoeller
  See Also:
    `PreparedStatement.setObject(int, Object, int)`, `StoredProcedure`

- - ### Field Summary

    - ### Fields inherited from interface org.springframework.jdbc.core.SqlTypeValue

      `TYPE_UNKNOWN`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractSqlTypeValue()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract Object` | `createTypeValue(Connection con, int sqlType, String typeName)` Create the type value to be passed into `PreparedStatement.setObject`.
    `void` | `setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, String typeName)` Set the type value on the given PreparedStatement.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractSqlTypeValue

          public AbstractSqlTypeValue()

  - ### Method Detail

    - #### setTypeValue

          public final void setTypeValue(PreparedStatement ps,
                          int paramIndex,
                          int sqlType,
                          String typeName)
                                  throws SQLException

      Description copied from interface: `SqlTypeValue`
      Set the type value on the given PreparedStatement.
      Specified by:
        `setTypeValue` in interface `SqlTypeValue`
      Parameters:
        `ps` - the PreparedStatement to work on
        `paramIndex` - the index of the parameter for which we need to set the value
        `sqlType` - SQL type of the parameter we are setting
        `typeName` - the type name of the parameter (optional)
      Throws:
        `SQLException` - if a SQLException is encountered while setting parameter values
      See Also:
        `Types`, `PreparedStatement.setObject(int, java.lang.Object, int)`

    - #### createTypeValue

          protected abstract Object createTypeValue(Connection con,
                               int sqlType,
                               String typeName)
                                             throws SQLException

      Create the type value to be passed into `PreparedStatement.setObject`.
      Parameters:
        `con` - the JDBC Connection, if needed to create any database-specific objects
        `sqlType` - SQL type of the parameter we are setting
        `typeName` - the type name of the parameter
      Returns:
        the type value
      Throws:
        `SQLException` - if a SQLException is encountered setting parameter values (that is, there's no need to catch SQLException)
      See Also:
        `PreparedStatement.setObject(int, Object, int)`