Package org.springframework.jdbc.object
Class BatchSqlUpdate
java.lang.Object
org.springframework.jdbc.object.RdbmsOperation
org.springframework.jdbc.object.SqlOperation
org.springframework.jdbc.object.SqlUpdate
org.springframework.jdbc.object.BatchSqlUpdate
- All Implemented Interfaces:
- InitializingBean
SqlUpdate subclass that performs batch update operations. Encapsulates
 queuing up records to be updated, and adds them as a single batch once
 
flush is called or the given batch size has been met.
 Note that this class is a non-thread-safe object, in contrast
 to all other JDBC operations objects in this package. You need to create
 a new instance of it for each use, or call reset before
 reuse within the same thread.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final intDefault number of inserts to accumulate before committing a batch (5000).Fields inherited from class org.springframework.jdbc.object.RdbmsOperationlogger
- 
Constructor SummaryConstructorsConstructorDescriptionConstructor to allow use as a JavaBean.BatchSqlUpdate(DataSource ds, String sql) Construct an update object with a given DataSource and SQL.BatchSqlUpdate(DataSource ds, String sql, int[] types) Construct an update object with a given DataSource, SQL and anonymous parameters.BatchSqlUpdate(DataSource ds, String sql, int[] types, int batchSize) Construct an update object with a given DataSource, SQL, anonymous parameters and specifying the maximum number of rows that may be affected.
- 
Method SummaryModifier and TypeMethodDescriptionint[]flush()Trigger any queued update operations to be added as a final batch.intReturn the number of already executed statements.intReturn the current number of statements or statement parameters in the queue.int[]Return the number of affected rows for all already executed statements.voidreset()Reset the statement parameter queue, the rows affected cache, and the execution count.voidsetBatchSize(int batchSize) Set the number of statements that will trigger an automatic intermediate flush.voidsetTrackRowsAffected(boolean trackRowsAffected) Set whether to track the rows affected by batch updates performed by this operation object.protected booleanBatchSqlUpdate does not support BLOB or CLOB parameters.intOverridden version ofupdatethat adds the given statement parameters to the queue rather than executing them immediately.Methods inherited from class org.springframework.jdbc.object.SqlUpdatecheckRowsAffected, setMaxRowsAffected, setRequiredRowsAffected, update, update, update, update, update, update, update, update, updateByNamedParam, updateByNamedParamMethods inherited from class org.springframework.jdbc.object.SqlOperationcompileInternal, getParsedSql, newPreparedStatementCreator, newPreparedStatementCreator, newPreparedStatementSetter, onCompileInternalMethods inherited from class org.springframework.jdbc.object.RdbmsOperationafterPropertiesSet, allowsUnusedParameters, checkCompiled, compile, declareParameter, getDeclaredParameters, getGeneratedKeysColumnNames, getJdbcTemplate, getResultSetType, getSql, isCompiled, isReturnGeneratedKeys, isUpdatableResults, resolveSql, setDataSource, setFetchSize, setGeneratedKeysColumnNames, setJdbcTemplate, setMaxRows, setParameters, setQueryTimeout, setResultSetType, setReturnGeneratedKeys, setSql, setTypes, setUpdatableResults, validateNamedParameters, validateParameters
- 
Field Details- 
DEFAULT_BATCH_SIZEpublic static final int DEFAULT_BATCH_SIZEDefault number of inserts to accumulate before committing a batch (5000).- See Also:
 
 
- 
- 
Constructor Details- 
BatchSqlUpdatepublic BatchSqlUpdate()Constructor to allow use as a JavaBean. DataSource and SQL must be supplied before compilation and use.
- 
BatchSqlUpdateConstruct an update object with a given DataSource and SQL.- Parameters:
- ds- the DataSource to use to obtain connections
- sql- the SQL statement to execute
 
- 
BatchSqlUpdateConstruct an update object with a given DataSource, SQL and anonymous parameters.- Parameters:
- ds- the DataSource to use to obtain connections
- sql- the SQL statement to execute
- types- the SQL types of the parameters, as defined in the- java.sql.Typesclass
- See Also:
 
- 
BatchSqlUpdateConstruct an update object with a given DataSource, SQL, anonymous parameters and specifying the maximum number of rows that may be affected.- Parameters:
- ds- the DataSource to use to obtain connections
- sql- the SQL statement to execute
- types- the SQL types of the parameters, as defined in the- java.sql.Typesclass
- batchSize- the number of statements that will trigger an automatic intermediate flush
- See Also:
 
 
- 
- 
Method Details- 
setBatchSizepublic void setBatchSize(int batchSize) Set the number of statements that will trigger an automatic intermediate flush.updatecalls or the given statement parameters will be queued until the batch size is met, at which point it will empty the queue and execute the batch.You can also flush already queued statements with an explicit flushcall. Note that you need to this after queueing all parameters to guarantee that all statements have been flushed.
- 
setTrackRowsAffectedpublic void setTrackRowsAffected(boolean trackRowsAffected) Set whether to track the rows affected by batch updates performed by this operation object.Default is "true". Turn this off to save the memory needed for the list of row counts. - See Also:
 
- 
supportsLobParametersprotected boolean supportsLobParameters()BatchSqlUpdate does not support BLOB or CLOB parameters.- Overrides:
- supportsLobParametersin class- RdbmsOperation
 
- 
updateOverridden version ofupdatethat adds the given statement parameters to the queue rather than executing them immediately. All otherupdatemethods of the SqlUpdate base class go through this method and will thus behave similarly.You need to call flushto actually execute the batch. If the specified batch size is reached, an implicit flush will happen; you still need to finally callflushto flush all statements.- Overrides:
- updatein class- SqlUpdate
- Parameters:
- params- array of parameter objects
- Returns:
- the number of rows affected by the update (always -1, meaning "not applicable", as the statement is not actually executed by this method)
- Throws:
- DataAccessException
- See Also:
 
- 
flushpublic int[] flush()Trigger any queued update operations to be added as a final batch.- Returns:
- an array of the number of rows affected by each statement
 
- 
getQueueCountpublic int getQueueCount()Return the current number of statements or statement parameters in the queue.
- 
getExecutionCountpublic int getExecutionCount()Return the number of already executed statements.
- 
getRowsAffectedpublic int[] getRowsAffected()Return the number of affected rows for all already executed statements. Accumulates all offlush's return values untilresetis invoked.- Returns:
- an array of the number of rows affected by each statement
- See Also:
 
- 
resetpublic void reset()Reset the statement parameter queue, the rows affected cache, and the execution count.
 
-