Package org.springframework.jdbc.core.simple

# Class AbstractJdbcInsert

java.lang.Object
org.springframework.jdbc.core.simple.AbstractJdbcInsert

Direct Known Subclasses:
  `SimpleJdbcInsert`

public abstract class AbstractJdbcInsert extends Object
Abstract class to provide base functionality for easy (batch) inserts based on configuration options and database meta-data.

This class provides the processing arrangement for `SimpleJdbcInsert`.

Since:
  2.5
Author:
  Thomas Risberg, Juergen Hoeller, Sam Brannen

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final org.apache.commons.logging.Log`
`logger`
Logger available to subclasses.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractJdbcInsert(DataSource dataSource)`
Constructor to be used when initializing using a `DataSource`.
`protected`
`AbstractJdbcInsert(JdbcTemplate jdbcTemplate)`
Constructor to be used when initializing using a `JdbcTemplate`.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`checkCompiled()`
Check whether this operation has been compiled already; lazily compile it if not already compiled.
`protected void`
`checkIfConfigurationModificationIsAllowed()`
Method to check whether we are allowed to make any configuration changes at this time.
`final void`
`compile()`
Compile this JdbcInsert using provided parameters and meta-data plus other settings.
`protected void`
`compileInternal()`
Delegate method to perform the actual compilation.
`protected int`
`doExecute(Map<String,?> args)`
Delegate method that executes the insert using the passed-in Map of parameters.
`protected int`
`doExecute(SqlParameterSource parameterSource)`
Delegate method that executes the insert using the passed-in `SqlParameterSource`.
`protected Number`
`doExecuteAndReturnKey(Map<String,?> args)`
Method that provides execution of the insert using the passed-in Map of parameters and returning a generated key.
`protected Number`
`doExecuteAndReturnKey(SqlParameterSource parameterSource)`
Method that provides execution of the insert using the passed-in `SqlParameterSource` and returning a generated key.
`protected KeyHolder`
`doExecuteAndReturnKeyHolder(Map<String,?> args)`
Method that provides execution of the insert using the passed-in Map of parameters and returning all generated keys.
`protected KeyHolder`
`doExecuteAndReturnKeyHolder(SqlParameterSource parameterSource)`
Method that provides execution of the insert using the passed-in `SqlParameterSource` and returning all generated keys.
`protected int[]`
`doExecuteBatch(Map<String,?>... batch)`
Delegate method that executes a batch insert using the passed-in Maps of parameters.
`protected int[]`
`doExecuteBatch(SqlParameterSource... batch)`
Delegate method that executes a batch insert using the passed-in `SqlParameterSources`.
`String`
`getCatalogName()`
Get the name of the catalog for this insert.
`List<String>`
`getColumnNames()`
Get the names of the columns used.
`String[]`
`getGeneratedKeyNames()`
Get the names of any generated keys.
`String`
`getInsertString()`
Get the insert string to be used.
`int[]`
`getInsertTypes()`
Get the array of `Types` to be used for insert.
`JdbcTemplate`
`getJdbcTemplate()`
Get the configured `JdbcTemplate`.
`String`
`getSchemaName()`
Get the name of the schema for this insert.
`String`
`getTableName()`
Get the name of the table for this insert.
`boolean`
`isCompiled()`
Is this operation "compiled"?
`boolean`
`isQuoteIdentifiers()`
Get the `quoteIdentifiers` flag.
`protected List<Object>`
`matchInParameterValuesWithInsertColumns(Map<String,?> args)`
Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.
`protected List<Object>`
`matchInParameterValuesWithInsertColumns(SqlParameterSource parameterSource)`
Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.
`protected void`
`onCompileInternal()`
Hook method that subclasses may override to react to compilation.
`void`
`setAccessTableColumnMetaData(boolean accessTableColumnMetaData)`
Specify whether the parameter meta-data for the call should be used.
`void`
`setCatalogName(String catalogName)`
Set the name of the catalog for this insert.
`void`
`setColumnNames(List<String> columnNames)`
Set the names of the columns to be used.
`void`
`setGeneratedKeyName(String generatedKeyName)`
Specify the name of a single generated key column.
`void`
`setGeneratedKeyNames(String... generatedKeyNames)`
Set the names of any generated keys.
`void`
`setOverrideIncludeSynonymsDefault(boolean override)`
Specify whether the default for including synonyms should be changed.
`void`
`setQuoteIdentifiers(boolean quoteIdentifiers)`
Specify whether SQL identifiers should be quoted.
`void`
`setSchemaName(String schemaName)`
Set the name of the schema for this insert.
`void`
`setTableName(String tableName)`
Set the name of the table for this insert.

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

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

## Field Details

### logger

protected final org.apache.commons.logging.Log logger
Logger available to subclasses.

## Constructor Details

### AbstractJdbcInsert

protected AbstractJdbcInsert(DataSource dataSource)
Constructor to be used when initializing using a `DataSource`.

Parameters:
  `dataSource` - the `DataSource` to be used

### AbstractJdbcInsert

protected AbstractJdbcInsert(JdbcTemplate jdbcTemplate)
Constructor to be used when initializing using a `JdbcTemplate`.

Parameters:
  `jdbcTemplate` - the `JdbcTemplate` to use

## Method Details

### getJdbcTemplate

public JdbcTemplate getJdbcTemplate()
Get the configured `JdbcTemplate`.

### setTableName

public void setTableName(@Nullable String tableName)
Set the name of the table for this insert.

### getTableName

@Nullable public String getTableName()
Get the name of the table for this insert.

### setSchemaName

public void setSchemaName(@Nullable String schemaName)
Set the name of the schema for this insert.

### getSchemaName

@Nullable public String getSchemaName()
Get the name of the schema for this insert.

### setCatalogName

public void setCatalogName(@Nullable String catalogName)
Set the name of the catalog for this insert.

### getCatalogName

@Nullable public String getCatalogName()
Get the name of the catalog for this insert.

### setColumnNames

public void setColumnNames(List<String> columnNames)
Set the names of the columns to be used.

### getColumnNames

public List<String> getColumnNames()
Get the names of the columns used.

### setGeneratedKeyName

public void setGeneratedKeyName(String generatedKeyName)
Specify the name of a single generated key column.

### setGeneratedKeyNames

public void setGeneratedKeyNames(String... generatedKeyNames)
Set the names of any generated keys.

### getGeneratedKeyNames

public String[] getGeneratedKeyNames()
Get the names of any generated keys.

### setAccessTableColumnMetaData

public void setAccessTableColumnMetaData(boolean accessTableColumnMetaData)
Specify whether the parameter meta-data for the call should be used.

The default is `true`.

### setOverrideIncludeSynonymsDefault

public void setOverrideIncludeSynonymsDefault(boolean override)
Specify whether the default for including synonyms should be changed.

The default is `false`.

### getInsertString

public String getInsertString()
Get the insert string to be used.

### getInsertTypes

public int[] getInsertTypes()
Get the array of `Types` to be used for insert.

### setQuoteIdentifiers

public void setQuoteIdentifiers(boolean quoteIdentifiers)
Specify whether SQL identifiers should be quoted.

Defaults to `false`. If set to `true`, the identifier quote string for the underlying database will be used to quote SQL identifiers in generated SQL statements.

Parameters:
  `quoteIdentifiers` - whether identifiers should be quoted
Since:
  6.1
See Also:
  - `DatabaseMetaData.getIdentifierQuoteString()`

### isQuoteIdentifiers

public boolean isQuoteIdentifiers()
Get the `quoteIdentifiers` flag.

Since:
  6.1
See Also:
  - `setQuoteIdentifiers(boolean)`

### compile

public final void compile() throws org.springframework.dao.InvalidDataAccessApiUsageException
Compile this JdbcInsert using provided parameters and meta-data plus other settings. This finalizes the configuration for this object and subsequent attempts to compile are ignored. This will be implicitly called the first time an un-compiled insert is executed.

Throws:
  `org.springframework.dao.InvalidDataAccessApiUsageException` - if the object hasn't been correctly initialized, for example if no DataSource has been provided

### compileInternal

protected void compileInternal()
Delegate method to perform the actual compilation.

Subclasses can override this template method to perform their own compilation. Invoked after this base class's compilation is complete.

### onCompileInternal

protected void onCompileInternal()
Hook method that subclasses may override to react to compilation.

This implementation is empty.

### isCompiled

public boolean isCompiled()
Is this operation "compiled"?

Returns:
  whether this operation is compiled and ready to use

### checkCompiled

protected void checkCompiled()
Check whether this operation has been compiled already; lazily compile it if not already compiled.

Automatically called by all `doExecute*(...)` methods.

### checkIfConfigurationModificationIsAllowed

protected void checkIfConfigurationModificationIsAllowed()
Method to check whether we are allowed to make any configuration changes at this time.

If the class has been compiled, then no further changes to the configuration are allowed.

### doExecute

protected int doExecute(Map<String,?> args)
Delegate method that executes the insert using the passed-in Map of parameters.

Parameters:
  `args` - a Map with parameter names and values to be used in insert
Returns:
  the number of rows affected

### doExecute

protected int doExecute(SqlParameterSource parameterSource)
Delegate method that executes the insert using the passed-in `SqlParameterSource`.

Parameters:
  `parameterSource` - parameter names and values to be used in insert
Returns:
  the number of rows affected

### doExecuteAndReturnKey

protected Number doExecuteAndReturnKey(Map<String,?> args)
Method that provides execution of the insert using the passed-in Map of parameters and returning a generated key.

Parameters:
  `args` - a Map with parameter names and values to be used in insert
Returns:
  the key generated by the insert

### doExecuteAndReturnKey

protected Number doExecuteAndReturnKey(SqlParameterSource parameterSource)
Method that provides execution of the insert using the passed-in `SqlParameterSource` and returning a generated key.

Parameters:
  `parameterSource` - parameter names and values to be used in insert
Returns:
  the key generated by the insert

### doExecuteAndReturnKeyHolder

protected KeyHolder doExecuteAndReturnKeyHolder(Map<String,?> args)
Method that provides execution of the insert using the passed-in Map of parameters and returning all generated keys.

Parameters:
  `args` - a Map with parameter names and values to be used in insert
Returns:
  the KeyHolder containing keys generated by the insert

### doExecuteAndReturnKeyHolder

protected KeyHolder doExecuteAndReturnKeyHolder(SqlParameterSource parameterSource)
Method that provides execution of the insert using the passed-in `SqlParameterSource` and returning all generated keys.

Parameters:
  `parameterSource` - parameter names and values to be used in insert
Returns:
  the KeyHolder containing keys generated by the insert

### doExecuteBatch

protected int[] doExecuteBatch(Map<String,?>... batch)
Delegate method that executes a batch insert using the passed-in Maps of parameters.

Parameters:
  `batch` - maps with parameter names and values to be used in the batch insert
Returns:
  an array of number of rows affected

### doExecuteBatch

protected int[] doExecuteBatch(SqlParameterSource... batch)
Delegate method that executes a batch insert using the passed-in `SqlParameterSources`.

Parameters:
  `batch` - parameter sources with names and values to be used in the batch insert
Returns:
  an array of number of rows affected

### matchInParameterValuesWithInsertColumns

protected List<Object> matchInParameterValuesWithInsertColumns(SqlParameterSource parameterSource)
Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.

Parameters:
  `parameterSource` - the parameter values provided as a `SqlParameterSource`
Returns:
  a List of values

### matchInParameterValuesWithInsertColumns

protected List<Object> matchInParameterValuesWithInsertColumns(Map<String,?> args)
Match the provided in parameter values with registered parameters and parameters defined via meta-data processing.

Parameters:
  `args` - the parameter values provided as a Map
Returns:
  a List of values