Class SimpleJdbcInsert
- All Implemented Interfaces:
SimpleJdbcInsertOperations
SimpleJdbcInsert is a multi-threaded, reusable object providing easy
(batch) 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 JDBC driver can provide the names of the columns
for a specified table then we can rely on this auto-detection feature. If that
is not the case, then the column names must be specified explicitly.
The actual (batch) insert is handled using Spring's JdbcTemplate.
Many of the configuration methods return the current instance of the
SimpleJdbcInsert to provide the ability to chain multiple ones together
in a "fluent" API style.
- Since:
- 2.5
- Author:
- Thomas Risberg, Juergen Hoeller, Sam Brannen
- See Also:
-
Field Summary
Fields inherited from class AbstractJdbcInsert
logger -
Constructor Summary
ConstructorsConstructorDescriptionSimpleJdbcInsert(DataSource dataSource) Constructor that accepts the JDBCDataSourceto use when creating theJdbcTemplate.SimpleJdbcInsert(JdbcTemplate jdbcTemplate) Alternative constructor that accepts theJdbcTemplateto be used. -
Method Summary
Modifier and TypeMethodDescriptionintExecute the insert using the values passed in.intexecute(SqlParameterSource parameterSource) Execute the insert using the values passed in.executeAndReturnKey(Map<String, ?> args) Execute the insert using the values passed in and return the generated key.executeAndReturnKey(SqlParameterSource parameterSource) Execute the insert using the values passed in and return the generated key.executeAndReturnKeyHolder(Map<String, ?> args) Execute the insert using the values passed in and return the generated keys.executeAndReturnKeyHolder(SqlParameterSource parameterSource) Execute the insert using the values passed in and return the generated keys.int[]executeBatch(Map<String, ?>... 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.Include synonyms for the column meta-data lookups via JDBC.usingColumns(String... columnNames) Specify the column names that the insert statement should be limited to use.usingGeneratedKeyColumns(String... columnNames) Specify the names of any columns that have auto-generated keys.Specify that SQL identifiers should be quoted.withCatalogName(String catalogName) Specify the catalog name, if any, to be used for the insert.Turn off any processing of column meta-data information obtained via JDBC.withSchemaName(String schemaName) Specify the schema name, if any, to be used for the insert.withTableName(String tableName) Specify the table name to be used for the insert.Methods inherited from class AbstractJdbcInsert
checkCompiled, checkIfConfigurationModificationIsAllowed, compile, compileInternal, doExecute, doExecute, doExecuteAndReturnKey, doExecuteAndReturnKey, doExecuteAndReturnKeyHolder, doExecuteAndReturnKeyHolder, doExecuteBatch, doExecuteBatch, getCatalogName, getColumnNames, getGeneratedKeyNames, getInsertString, getInsertTypes, getJdbcTemplate, getSchemaName, getTableName, isCompiled, isQuoteIdentifiers, matchInParameterValuesWithInsertColumns, matchInParameterValuesWithInsertColumns, onCompileInternal, setAccessTableColumnMetaData, setCatalogName, setColumnNames, setGeneratedKeyName, setGeneratedKeyNames, setOverrideIncludeSynonymsDefault, setQuoteIdentifiers, setSchemaName, setTableName
-
Constructor Details
-
SimpleJdbcInsert
Constructor that accepts the JDBCDataSourceto use when creating theJdbcTemplate.- Parameters:
dataSource- theDataSourceto use- See Also:
-
SimpleJdbcInsert
Alternative constructor that accepts theJdbcTemplateto be used.- Parameters:
jdbcTemplate- theJdbcTemplateto use- See Also:
-
-
Method Details
-
withTableName
Description copied from interface:SimpleJdbcInsertOperationsSpecify the table name to be used for the insert.- Specified by:
withTableNamein interfaceSimpleJdbcInsertOperations- Parameters:
tableName- the name of the stored table- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
withSchemaName
Description copied from interface:SimpleJdbcInsertOperationsSpecify the schema name, if any, to be used for the insert.- Specified by:
withSchemaNamein interfaceSimpleJdbcInsertOperations- Parameters:
schemaName- the name of the schema- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
withCatalogName
Description copied from interface:SimpleJdbcInsertOperationsSpecify the catalog name, if any, to be used for the insert.- Specified by:
withCatalogNamein interfaceSimpleJdbcInsertOperations- Parameters:
catalogName- the name of the catalog- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
usingColumns
Description copied from interface:SimpleJdbcInsertOperationsSpecify the column names that the insert statement should be limited to use.- Specified by:
usingColumnsin interfaceSimpleJdbcInsertOperations- Parameters:
columnNames- one or more column names- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
usingGeneratedKeyColumns
Description copied from interface:SimpleJdbcInsertOperationsSpecify the names of any columns that have auto-generated keys.- Specified by:
usingGeneratedKeyColumnsin interfaceSimpleJdbcInsertOperations- Parameters:
columnNames- one or more column names- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
usingQuotedIdentifiers
Description copied from interface:SimpleJdbcInsertOperationsSpecify that SQL identifiers should be quoted.If this method is invoked, the identifier quote string for the underlying database will be used to quote SQL identifiers in generated SQL statements. In this context, SQL identifiers refer to schema, table, and column names.
When identifiers are quoted, explicit column names must be supplied via
SimpleJdbcInsertOperations.usingColumns(String...). Furthermore, all identifiers for the schema name, table name, and column names must match the corresponding identifiers in the database's metadata regarding casing (mixed case, uppercase, or lowercase).- Specified by:
usingQuotedIdentifiersin interfaceSimpleJdbcInsertOperations- Returns:
- this
SimpleJdbcInsert(for method chaining) - See Also:
-
withoutTableColumnMetaDataAccess
Description copied from interface:SimpleJdbcInsertOperationsTurn off any processing of column meta-data information obtained via JDBC.- Specified by:
withoutTableColumnMetaDataAccessin interfaceSimpleJdbcInsertOperations- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
includeSynonymsForTableColumnMetaData
Description copied from interface:SimpleJdbcInsertOperationsInclude synonyms for the column meta-data lookups via JDBC.Note: This is only necessary to include for Oracle since other databases supporting synonyms seem to include the synonyms automatically.
- Specified by:
includeSynonymsForTableColumnMetaDatain interfaceSimpleJdbcInsertOperations- Returns:
- this
SimpleJdbcInsert(for method chaining)
-
execute
Description copied from interface:SimpleJdbcInsertOperationsExecute the insert using the values passed in.- Specified by:
executein interfaceSimpleJdbcInsertOperations- Parameters:
args- a Map containing column names and corresponding value- Returns:
- the number of rows affected as returned by the JDBC driver
-
execute
Description copied from interface:SimpleJdbcInsertOperationsExecute the insert using the values passed in.- Specified by:
executein interfaceSimpleJdbcInsertOperations- Parameters:
parameterSource- the SqlParameterSource containing values to use for insert- Returns:
- the number of rows affected as returned by the JDBC driver
-
executeAndReturnKey
Description copied from interface:SimpleJdbcInsertOperationsExecute 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 KeyHolder but the caller must verify that it actually contains the generated keys.
- Specified by:
executeAndReturnKeyin interfaceSimpleJdbcInsertOperations- Parameters:
args- a Map containing column names and corresponding value- Returns:
- the generated key value
-
executeAndReturnKey
Description copied from interface:SimpleJdbcInsertOperationsExecute 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 KeyHolder but the caller must verify that it actually contains the generated keys.
- Specified by:
executeAndReturnKeyin interfaceSimpleJdbcInsertOperations- Parameters:
parameterSource- the SqlParameterSource containing values to use for insert- Returns:
- the generated key value.
-
executeAndReturnKeyHolder
Description copied from interface:SimpleJdbcInsertOperationsExecute 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:
executeAndReturnKeyHolderin interfaceSimpleJdbcInsertOperations- Parameters:
args- a Map containing column names and corresponding value- Returns:
- the KeyHolder containing all generated keys
-
executeAndReturnKeyHolder
Description copied from interface:SimpleJdbcInsertOperationsExecute 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:
executeAndReturnKeyHolderin interfaceSimpleJdbcInsertOperations- Parameters:
parameterSource- the SqlParameterSource containing values to use for insert- Returns:
- the KeyHolder containing all generated keys
-
executeBatch
Description copied from interface:SimpleJdbcInsertOperationsExecute a batch insert using the batch of values passed in.- Specified by:
executeBatchin interfaceSimpleJdbcInsertOperations- 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
Description copied from interface:SimpleJdbcInsertOperationsExecute a batch insert using the batch of values passed in.- Specified by:
executeBatchin interfaceSimpleJdbcInsertOperations- 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
-