public class BatchSqlUpdate extends SqlUpdate
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.
Modifier and Type | Field and Description |
---|---|
static int |
DEFAULT_BATCH_SIZE
Default number of inserts to accumulate before committing a batch (5000).
|
logger
Constructor and Description |
---|
BatchSqlUpdate()
Constructor 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.
|
Modifier and Type | Method and Description |
---|---|
int[] |
flush()
Trigger any queued update operations to be added as a final batch.
|
int |
getExecutionCount()
Return the number of already executed statements.
|
int |
getQueueCount()
Return the current number of statements or statement parameters
in the queue.
|
int[] |
getRowsAffected()
Return the number of affected rows for all already executed statements.
|
void |
reset()
Reset the statement parameter queue, the rows affected cache,
and the execution count.
|
void |
setBatchSize(int batchSize)
Set the number of statements that will trigger an automatic intermediate
flush.
|
void |
setTrackRowsAffected(boolean trackRowsAffected)
Set whether to track the rows affected by batch updates performed
by this operation object.
|
protected boolean |
supportsLobParameters()
BatchSqlUpdate does not support BLOB or CLOB parameters.
|
int |
update(Object... params)
Overridden version of
update that adds the given statement
parameters to the queue rather than executing them immediately. |
checkRowsAffected, setMaxRowsAffected, setRequiredRowsAffected, update, update, update, update, update, update, update, update, updateByNamedParam, updateByNamedParam
compileInternal, getParsedSql, newPreparedStatementCreator, newPreparedStatementCreator, newPreparedStatementSetter, onCompileInternal
afterPropertiesSet, 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
public static final int DEFAULT_BATCH_SIZE
public BatchSqlUpdate()
public BatchSqlUpdate(DataSource ds, String sql)
ds
- the DataSource to use to obtain connectionssql
- the SQL statement to executepublic BatchSqlUpdate(DataSource ds, String sql, int[] types)
ds
- the DataSource to use to obtain connectionssql
- the SQL statement to executetypes
- the SQL types of the parameters, as defined in the
java.sql.Types
classTypes
public BatchSqlUpdate(DataSource ds, String sql, int[] types, int batchSize)
ds
- the DataSource to use to obtain connectionssql
- the SQL statement to executetypes
- the SQL types of the parameters, as defined in the
java.sql.Types
classbatchSize
- the number of statements that will trigger
an automatic intermediate flushTypes
public void setBatchSize(int batchSize)
update
calls 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
flush
call. Note that you need to this after queueing
all parameters to guarantee that all statements have been flushed.
public void setTrackRowsAffected(boolean trackRowsAffected)
Default is "true". Turn this off to save the memory needed for the list of row counts.
getRowsAffected()
protected boolean supportsLobParameters()
supportsLobParameters
in class RdbmsOperation
public int update(Object... params) throws DataAccessException
update
that adds the given statement
parameters to the queue rather than executing them immediately.
All other update
methods of the SqlUpdate base class go
through this method and will thus behave similarly.
You need to call flush
to actually execute the batch.
If the specified batch size is reached, an implicit flush will happen;
you still need to finally call flush
to flush all statements.
update
in class SqlUpdate
params
- array of parameter objectsDataAccessException
flush()
public int[] flush()
public int getQueueCount()
public int getExecutionCount()
public int[] getRowsAffected()
flush
's return values until
reset
is invoked.reset()
public void reset()