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.

NOTE: As of 6.1.4, this class is effectively superseded by SqlBinaryValue and SqlCharacterValue which are capable of modern BLOB/CLOB handling while also handling LONGVARBINARY/LONGVARCHAR. The only reason to keep using this class is a custom LobHandler.

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:
  • Constructor Details

    • 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:
    • 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:
    • 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:
    • 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:
    • 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 Details