org.springframework.jdbc.core.support

## Class SqlLobValue

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

- All Implemented Interfaces:
    DisposableSqlTypeValue, SqlTypeValue

      public class SqlLobValue
      extends Object
      implements DisposableSqlTypeValue

  Object to represent an SQL BLOB/CLOB value parameter. BLOBs can either be an InputStream or a byte array. CLOBs can be in the form of a Reader, InputStream, or String. Each CLOB/BLOB value will be stored together with its length. The type is based on which constructor is used. Instances of this class are stateful and immutable: use them and discard them.

  This class holds a reference to a `LobCreator` that must be closed after the update has completed. This is done via a call to the `cleanup()` method. All handling of the `LobCreator` is done by the framework classes that use it - no need to set or close the `LobCreator` for end users of this class.

  A usage example:

      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);  // reusable object
       LobHandler lobHandler = new DefaultLobHandler();  // reusable object

       jdbcTemplate.update(
           "INSERT INTO imagedb (image_name, content, description) VALUES (?, ?, ?)",
           new Object[] {
             name,
             new SqlLobValue(contentStream, contentLength, lobHandler),
             new SqlLobValue(description, lobHandler)
           },
           new int[] {Types.VARCHAR, Types.BLOB, Types.CLOB});

  Since:
    1.1
  Author:
    Thomas Risberg, Juergen Hoeller
  See Also:
    `LobHandler`, `LobCreator`, `JdbcTemplate.update(String, Object[], int[])`, `SqlUpdate.update(Object[])`, `StoredProcedure.execute(java.util.Map)`

- - ### Field Summary

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

      `TYPE_UNKNOWN`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SqlLobValue(byte[] bytes)` Create a new BLOB value with the given byte array, using a DefaultLobHandler.
    `SqlLobValue(byte[] bytes, LobHandler lobHandler)` Create a new BLOB value with the given byte array.
    `SqlLobValue(InputStream stream, int length)` Create a new BLOB/CLOB value with the given stream, using a DefaultLobHandler.
    `SqlLobValue(InputStream stream, int length, LobHandler lobHandler)` Create a new BLOB/CLOB value with the given stream.
    `SqlLobValue(Reader reader, int length)` Create a new CLOB value with the given character stream, using a DefaultLobHandler.
    `SqlLobValue(Reader reader, int length, LobHandler lobHandler)` Create a new CLOB value with the given character stream.
    `SqlLobValue(String content)` Create a new CLOB value with the given content string, using a DefaultLobHandler.
    `SqlLobValue(String content, LobHandler lobHandler)` Create a new CLOB value with the given content string.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `cleanup()` Close the LobCreator.
    `void` | `setTypeValue(PreparedStatement ps, int paramIndex, int sqlType, String typeName)` Set the specified content via the LobCreator.

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

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

- - ### Constructor Detail

    - #### SqlLobValue

          public SqlLobValue(@Nullable
                             byte[] bytes)

      Create a new BLOB value with the given byte array, using a DefaultLobHandler.
      Parameters:
        `bytes` - the byte array containing the BLOB value
      See Also:
        `DefaultLobHandler`

    - #### SqlLobValue

          public SqlLobValue(@Nullable
                             byte[] bytes,
                             LobHandler lobHandler)

      Create a new BLOB value with the given byte array.
      Parameters:
        `bytes` - the byte array containing the BLOB value
        `lobHandler` - the LobHandler to be used

    - #### SqlLobValue

          public SqlLobValue(@Nullable
                             String content)

      Create a new CLOB value with the given content string, using a DefaultLobHandler.
      Parameters:
        `content` - the String containing the CLOB value
      See Also:
        `DefaultLobHandler`

    - #### SqlLobValue

          public SqlLobValue(@Nullable
                             String content,
                             LobHandler lobHandler)

      Create a new CLOB value with the given content string.
      Parameters:
        `content` - the String containing the CLOB value
        `lobHandler` - the LobHandler to be used

    - #### SqlLobValue

          public SqlLobValue(InputStream stream,
                             int length)

      Create a new BLOB/CLOB value with the given stream, using a DefaultLobHandler.
      Parameters:
        `stream` - the stream containing the LOB value
        `length` - the length of the LOB value
      See Also:
        `DefaultLobHandler`

    - #### SqlLobValue

          public SqlLobValue(InputStream stream,
                             int length,
                             LobHandler lobHandler)

      Create a new BLOB/CLOB value with the given stream.
      Parameters:
        `stream` - the stream containing the LOB value
        `length` - the length of the LOB value
        `lobHandler` - the LobHandler to be used

    - #### SqlLobValue

          public SqlLobValue(Reader reader,
                             int length)

      Create a new CLOB value with the given character stream, using a DefaultLobHandler.
      Parameters:
        `reader` - the character stream containing the CLOB value
        `length` - the length of the CLOB value
      See Also:
        `DefaultLobHandler`

    - #### SqlLobValue

          public SqlLobValue(Reader reader,
                             int length,
                             LobHandler lobHandler)

      Create a new CLOB value with the given character stream.
      Parameters:
        `reader` - the character stream containing the CLOB value
        `length` - the length of the CLOB value
        `lobHandler` - the LobHandler to be used

  - ### Method Detail

    - #### setTypeValue

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

      Set the specified content via the LobCreator.
      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)`

    - #### cleanup

          public void cleanup()

      Close the LobCreator.
      Specified by:
        `cleanup` in interface `DisposableSqlTypeValue`
      See Also:
        `cleanup()`, `SqlValue.cleanup()`