Spring Framework

org.springframework.jdbc.core.simple
Class SimpleJdbcInsert

java.lang.Object
  extended by org.springframework.jdbc.core.simple.AbstractJdbcInsert
      extended by org.springframework.jdbc.core.simple.SimpleJdbcInsert
All Implemented Interfaces:
SimpleJdbcInsertOperations

public class SimpleJdbcInsert
extends AbstractJdbcInsert
implements SimpleJdbcInsertOperations

A SimpleJdbcInsert is a multi-threaded, reusable object providing easy insert capabilities for a table. It provides meta data processing to simplify the code needed to construct a basic insert statement. All you need to provide is the name of the table and a Map containing the column names and the column values.

The meta data processing is based on the DatabaseMetaData provided by the JDBC driver. As long as the JBDC driver can provide the names of the columns for a specified table than we can rely on this auto-detection feature. If that is not the case then the column names must be specified explicitly.

The actual insert is being handled using Spring's JdbcTemplate.

Many of the configuration methods return the current instance of the SimpleJdbcInsert to provide the ability to string multiple ones together in a "fluid" interface style.

Since:
2.5
Author:
Thomas Risberg
See Also:
DatabaseMetaData, JdbcTemplate

Field Summary
 
Fields inherited from class org.springframework.jdbc.core.simple.AbstractJdbcInsert
logger
 
Constructor Summary
SimpleJdbcInsert(javax.sql.DataSource dataSource)
          Constructor that takes one parameter with the JDBC DataSource to use when creating the JdbcTemplate.
SimpleJdbcInsert(JdbcTemplate jdbcTemplate)
          Alternative Constructor that takes one parameter with the JdbcTemplate to be used.
 
Method Summary
 int execute(java.util.Map<java.lang.String,java.lang.Object> args)
          Execute the insert using the values passed in.
 int execute(SqlParameterSource parameterSource)
          Execute the insert using the values passed in.
 java.lang.Number executeAndReturnKey(java.util.Map<java.lang.String,java.lang.Object> args)
          Execute the insert using the values passed in and return the generated key.
 java.lang.Number executeAndReturnKey(SqlParameterSource parameterSource)
          Execute the insert using the values passed in and return the generated key.
 KeyHolder executeAndReturnKeyHolder(java.util.Map<java.lang.String,java.lang.Object> args)
          Execute the insert using the values passed in and return the generated keys.
 KeyHolder executeAndReturnKeyHolder(SqlParameterSource parameterSource)
          Execute the insert using the values passed in and return the generated keys.
 int[] executeBatch(java.util.Map<java.lang.String,java.lang.Object>[] batch)
          Execute a batch insert using the batch of values passed in.
 int[] executeBatch(SqlParameterSource[] batch)
          Execute a batch insert using the batch of values passed in.
 SimpleJdbcInsertOperations includeSynonymsForTableColumnMetaData()
          Include synonyms for the column meta data lookups via JDBC.
 SimpleJdbcInsertOperations useNativeJdbcExtractorForMetaData(NativeJdbcExtractor nativeJdbcExtractor)
          Use a the provided NativeJdbcExtractor during the column meta data lookups via JDBC.
 SimpleJdbcInsert usingColumns(java.lang.String... columnNames)
          Specify the column names that the insert statement should be limited to use.
 SimpleJdbcInsert usingGeneratedKeyColumns(java.lang.String... columnNames)
          Specify the name sof any columns that have auto generated keys.
 SimpleJdbcInsert withCatalogName(java.lang.String catalogName)
          Specify the catalog name, if any, to be used for the insert.
 SimpleJdbcInsertOperations withoutTableColumnMetaDataAccess()
          Turn off any processing of column meta data information obtained via JDBC.
 SimpleJdbcInsert withSchemaName(java.lang.String schemaName)
          Specify the shema name, if any, to be used for the insert.
 SimpleJdbcInsert withTableName(java.lang.String tableName)
          Specify the table name to be used for the insert.
 
Methods inherited from class org.springframework.jdbc.core.simple.AbstractJdbcInsert
checkCompiled, checkIfConfigurationModificationIsAllowed, compile, compileInternal, doExecute, doExecute, doExecuteAndReturnKey, doExecuteAndReturnKey, doExecuteAndReturnKeyHolder, doExecuteAndReturnKeyHolder, doExecuteBatch, doExecuteBatch, getCatalogName, getColumnNames, getGeneratedKeyNames, getInsertString, getInsertTypes, getJdbcTemplate, getSchemaName, getTableName, isCompiled, matchInParameterValuesWithInsertColumns, matchInParameterValuesWithInsertColumns, onCompileInternal, setAccessTableColumnMetaData, setCatalogName, setColumnNames, setGeneratedKeyName, setGeneratedKeyNames, setNativeJdbcExtractor, setOverrideIncludeSynonymsDefault, setSchemaName, setTableName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SimpleJdbcInsert

public SimpleJdbcInsert(javax.sql.DataSource dataSource)
Constructor that takes one parameter with the JDBC DataSource to use when creating the JdbcTemplate.

Parameters:
dataSource - the DataSource to use
See Also:
JdbcAccessor.setDataSource(javax.sql.DataSource)

SimpleJdbcInsert

public SimpleJdbcInsert(JdbcTemplate jdbcTemplate)
Alternative Constructor that takes one parameter with the JdbcTemplate to be used.

Parameters:
jdbcTemplate - the JdbcTemplate to use
See Also:
JdbcAccessor.setDataSource(javax.sql.DataSource)
Method Detail

withTableName

public SimpleJdbcInsert withTableName(java.lang.String tableName)
Description copied from interface: SimpleJdbcInsertOperations
Specify the table name to be used for the insert.

Specified by:
withTableName in interface SimpleJdbcInsertOperations
Parameters:
tableName - the name of the stored table
Returns:
the instance of this SimpleJdbcInsert

withSchemaName

public SimpleJdbcInsert withSchemaName(java.lang.String schemaName)
Description copied from interface: SimpleJdbcInsertOperations
Specify the shema name, if any, to be used for the insert.

Specified by:
withSchemaName in interface SimpleJdbcInsertOperations
Parameters:
schemaName - the name of the schema
Returns:
the instance of this SimpleJdbcInsert

withCatalogName

public SimpleJdbcInsert withCatalogName(java.lang.String catalogName)
Description copied from interface: SimpleJdbcInsertOperations
Specify the catalog name, if any, to be used for the insert.

Specified by:
withCatalogName in interface SimpleJdbcInsertOperations
Parameters:
catalogName - the name of the catalog
Returns:
the instance of this SimpleJdbcInsert

usingColumns

public SimpleJdbcInsert usingColumns(java.lang.String... columnNames)
Description copied from interface: SimpleJdbcInsertOperations
Specify the column names that the insert statement should be limited to use.

Specified by:
usingColumns in interface SimpleJdbcInsertOperations
Parameters:
columnNames - one or more column names
Returns:
the instance of this SimpleJdbcInsert

usingGeneratedKeyColumns

public SimpleJdbcInsert usingGeneratedKeyColumns(java.lang.String... columnNames)
Description copied from interface: SimpleJdbcInsertOperations
Specify the name sof any columns that have auto generated keys.

Specified by:
usingGeneratedKeyColumns in interface SimpleJdbcInsertOperations
Parameters:
columnNames - one or more column names
Returns:
the instance of this SimpleJdbcInsert

withoutTableColumnMetaDataAccess

public SimpleJdbcInsertOperations withoutTableColumnMetaDataAccess()
Description copied from interface: SimpleJdbcInsertOperations
Turn off any processing of column meta data information obtained via JDBC.

Specified by:
withoutTableColumnMetaDataAccess in interface SimpleJdbcInsertOperations
Returns:
the instance of this SimpleJdbcInsert

includeSynonymsForTableColumnMetaData

public SimpleJdbcInsertOperations includeSynonymsForTableColumnMetaData()
Description copied from interface: SimpleJdbcInsertOperations
Include synonyms for the column meta data lookups via JDBC. Note: this is only necessary to include for Oracle since other databases supporting synonyms seems to include the synonyms automatically.

Specified by:
includeSynonymsForTableColumnMetaData in interface SimpleJdbcInsertOperations
Returns:
the instance of this SimpleJdbcInsert

useNativeJdbcExtractorForMetaData

public SimpleJdbcInsertOperations useNativeJdbcExtractorForMetaData(NativeJdbcExtractor nativeJdbcExtractor)
Description copied from interface: SimpleJdbcInsertOperations
Use a the provided NativeJdbcExtractor during the column meta data lookups via JDBC. Note: this is only necessary to include when running with a connection pool that wraps the meta data connection and when using a database like Oracle where it is necessary to access the native connection to include synonyms.

Specified by:
useNativeJdbcExtractorForMetaData in interface SimpleJdbcInsertOperations
Returns:
the instance of this SimpleJdbcInsert

execute

public int execute(java.util.Map<java.lang.String,java.lang.Object> args)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in.

Specified by:
execute in interface SimpleJdbcInsertOperations
Parameters:
args - Map containing column names and corresponding value
Returns:
the number of rows affected as returned by the JDBC driver

execute

public int execute(SqlParameterSource parameterSource)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in.

Specified by:
execute in interface SimpleJdbcInsertOperations
Parameters:
parameterSource - SqlParameterSource containing values to use for insert
Returns:
the number of rows affected as returned by the JDBC driver

executeAndReturnKey

public java.lang.Number executeAndReturnKey(java.util.Map<java.lang.String,java.lang.Object> args)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in and return the generated key. This requires that the name of the columns with auto generated keys have been specified. This method will always return a key or throw an exception if a key was not returned.

Specified by:
executeAndReturnKey in interface SimpleJdbcInsertOperations
Parameters:
args - Map containing column names and corresponding value
Returns:
the generated key value

executeAndReturnKey

public java.lang.Number executeAndReturnKey(SqlParameterSource parameterSource)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in and return the generated key. This requires that the name of the columns with auto generated keys have been specified. This method will always return a key or throw an exception if a key was not returned.

Specified by:
executeAndReturnKey in interface SimpleJdbcInsertOperations
Parameters:
parameterSource - SqlParameterSource containing values to use for insert
Returns:
the generated key value.

executeAndReturnKeyHolder

public KeyHolder executeAndReturnKeyHolder(java.util.Map<java.lang.String,java.lang.Object> args)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in and return the generated keys. This requires that the name of the columns with auto generated keys have been specified. This method will always return a KeyHolder but the caller must verify that it actually contains the generated keys.

Specified by:
executeAndReturnKeyHolder in interface SimpleJdbcInsertOperations
Parameters:
args - Map containing column names and corresponding value
Returns:
the KeyHolder containing all generated keys

executeAndReturnKeyHolder

public KeyHolder executeAndReturnKeyHolder(SqlParameterSource parameterSource)
Description copied from interface: SimpleJdbcInsertOperations
Execute the insert using the values passed in and return the generated keys. This requires that the name of the columns with auto generated keys have been specified. This method will always return a KeyHolder but the caller must verify that it actually contains the generated keys.

Specified by:
executeAndReturnKeyHolder in interface SimpleJdbcInsertOperations
Parameters:
parameterSource - SqlParameterSource containing values to use for insert
Returns:
the KeyHolder containing all generated keys

executeBatch

public int[] executeBatch(java.util.Map<java.lang.String,java.lang.Object>[] batch)
Description copied from interface: SimpleJdbcInsertOperations
Execute a batch insert using the batch of values passed in.

Specified by:
executeBatch in interface SimpleJdbcInsertOperations
Parameters:
batch - an array of Maps containing a batch of column names and corresponding value
Returns:
the array of number of rows affected as returned by the JDBC driver

executeBatch

public int[] executeBatch(SqlParameterSource[] batch)
Description copied from interface: SimpleJdbcInsertOperations
Execute a batch insert using the batch of values passed in.

Specified by:
executeBatch in interface SimpleJdbcInsertOperations
Parameters:
batch - an array of SqlParameterSource containing values for the batch
Returns:
the array of number of rows affected as returned by the JDBC driver

Spring Framework