Package 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
Description
`AbstractSqlTypeValue()`

## Method Summary

Modifier and Type
Method
Description
`protected abstract Object`
`createTypeValue(Connection con, int sqlType, String typeName)`
Create the type value to be passed into `PreparedStatement.setObject`.
`final 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 Details

### AbstractSqlTypeValue

public AbstractSqlTypeValue()

## Method Details

### setTypeValue

public final void setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, @Nullable 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` - the SQL type of the parameter we are setting
  `typeName` - the type name of the parameter (optional)
Throws:
  `SQLException` - if an 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, @Nullable 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` - the SQL type of the parameter we are setting
  `typeName` - the type name of the parameter
Returns:
  the type value
Throws:
  `SQLException` - if an SQLException is encountered setting parameter values (that is, there's no need to catch SQLException)
See Also:
  - `PreparedStatement.setObject(int, Object, int)`