## org.springframework.orm.ibatis.support
Class AbstractLobTypeHandler

    java.lang.Object
      com.ibatis.sqlmap.engine.type.BaseTypeHandler
          org.springframework.orm.ibatis.support.AbstractLobTypeHandler

All Implemented Interfaces:
  com.ibatis.sqlmap.engine.type.TypeHandler

Direct Known Subclasses:
  BlobByteArrayTypeHandler, BlobSerializableTypeHandler, ClobStringTypeHandler

    public abstract class AbstractLobTypeHandler

extends com.ibatis.sqlmap.engine.type.BaseTypeHandler

Abstract base class for iBATIS TypeHandler implementations that map to LOBs. Retrieves the LobHandler to use from SqlMapClientFactoryBean at config time.

For writing LOBs, an active Spring transaction synchronization is required, to be able to register a synchronization that closes the LobCreator.

Offers template methods for setting parameters and getting result values, passing in the LobHandler or LobCreator to use.

Since:
  1.1.5
Author:
  Juergen Hoeller
See Also:
  `LobHandler`, `LobCreator`, `SqlMapClientFactoryBean.setLobHandler(org.springframework.jdbc.support.lob.LobHandler)`

Field Summary
`static int` `LOB_CREATOR_SYNCHRONIZATION_ORDER` Order value for TransactionSynchronization objects that clean up LobCreators.

Constructor Summary
`` `AbstractLobTypeHandler()` Constructor used by iBATIS: fetches config-time LobHandler from SqlMapClientFactoryBean.
`protected` `AbstractLobTypeHandler(LobHandler lobHandler)` Constructor used for testing: takes an explicit LobHandler.

Method Summary
`Object` `getResult(CallableStatement cs, int columnIndex)` This implementation always throws a SQLException: retrieving LOBs from a CallableStatement is not supported.
`Object` `getResult(ResultSet rs, int columnIndex)` This implementation delegates to getResultInternal, passing in the LobHandler of this type.
`Object` `getResult(ResultSet rs, String columnName)` This implementation delegates to the getResult version that takes a column index.
`protected abstract Object` `getResultInternal(ResultSet rs, int index, LobHandler lobHandler)` Template method to extract a value from the given result set.
`void` `setParameter(PreparedStatement ps, int i, Object parameter, String jdbcType)` This implementation delegates to setParameterInternal, passing in a transaction-synchronized LobCreator for the LobHandler of this type.
`protected abstract void` `setParameterInternal(PreparedStatement ps, int index, Object value, String jdbcType, LobCreator lobCreator)` Template method to set the given value on the given statement.

Methods inherited from class com.ibatis.sqlmap.engine.type.BaseTypeHandler
`equals`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface com.ibatis.sqlmap.engine.type.TypeHandler
`valueOf`

Field Detail

### LOB_CREATOR_SYNCHRONIZATION_ORDER

    public static final int LOB_CREATOR_SYNCHRONIZATION_ORDER

  Order value for TransactionSynchronization objects that clean up LobCreators. Return DataSourceUtils.#CONNECTION_SYNCHRONIZATION_ORDER - 100 to execute LobCreator cleanup before JDBC Connection cleanup, if any.

  See Also:
    `DataSourceUtils.CONNECTION_SYNCHRONIZATION_ORDER`, Constant Field Values

Constructor Detail

### AbstractLobTypeHandler

    public AbstractLobTypeHandler()

  Constructor used by iBATIS: fetches config-time LobHandler from SqlMapClientFactoryBean.

  See Also:
    `SqlMapClientFactoryBean.getConfigTimeLobHandler()`

### AbstractLobTypeHandler

    protected AbstractLobTypeHandler(LobHandler lobHandler)

  Constructor used for testing: takes an explicit LobHandler.

Method Detail

### setParameter

    public final void setParameter(PreparedStatement ps,
                                   int i,
                                   Object parameter,
                                   String jdbcType)
                            throws SQLException

  This implementation delegates to setParameterInternal, passing in a transaction-synchronized LobCreator for the LobHandler of this type.

  Throws:
    `SQLException`
  See Also:
    `setParameterInternal(java.sql.PreparedStatement, int, java.lang.Object, java.lang.String, org.springframework.jdbc.support.lob.LobCreator)`

### getResult

    public final Object getResult(ResultSet rs,
                                  String columnName)
                           throws SQLException

  This implementation delegates to the getResult version that takes a column index.

  Throws:
    `SQLException`
  See Also:
    `getResult(java.sql.ResultSet, String)`, `ResultSet.findColumn(java.lang.String)`

### getResult

    public final Object getResult(ResultSet rs,
                                  int columnIndex)
                           throws SQLException

  This implementation delegates to getResultInternal, passing in the LobHandler of this type.

  Throws:
    `SQLException`
  See Also:
    `getResultInternal(java.sql.ResultSet, int, org.springframework.jdbc.support.lob.LobHandler)`

### getResult

    public Object getResult(CallableStatement cs,
                            int columnIndex)
                     throws SQLException

  This implementation always throws a SQLException: retrieving LOBs from a CallableStatement is not supported.

  Throws:
    `SQLException`

### setParameterInternal

    protected abstract void setParameterInternal(PreparedStatement ps,
                                                 int index,
                                                 Object value,
                                                 String jdbcType,
                                                 LobCreator lobCreator)
                                          throws SQLException,
                                                 IOException

  Template method to set the given value on the given statement.

  Parameters:
    `ps` - the PreparedStatement to set on
    `index` - the statement parameter index
    `value` - the parameter value to set
    `jdbcType` - the JDBC type of the parameter
    `lobCreator` - the LobCreator to use
  Throws:
    `SQLException` - if thrown by JDBC methods
    `IOException` - if thrown by streaming methods

### getResultInternal

    protected abstract Object getResultInternal(ResultSet rs,
                                                int index,
                                                LobHandler lobHandler)
                                         throws SQLException,
                                                IOException

  Template method to extract a value from the given result set.

  Parameters:
    `rs` - the ResultSet to extract from
    `index` - the index in the ResultSet
    `lobHandler` - the LobHandler to use
  Returns:
    the extracted value
  Throws:
    `SQLException` - if thrown by JDBC methods
    `IOException` - if thrown by streaming methods