public class

BatchSqlUpdate

extends SqlUpdate
java.lang.Object
   ↳ org.springframework.jdbc.object.RdbmsOperation
     ↳ org.springframework.jdbc.object.SqlOperation
       ↳ org.springframework.jdbc.object.SqlUpdate
         ↳ org.springframework.jdbc.object.BatchSqlUpdate

Class Overview

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.

See Also

Summary

Fields
public static int DEFAULT_BATCH_SIZE Default number of inserts to accumulate before commiting a batch (5000).
[Expand]
Inherited Fields
From class org.springframework.jdbc.object.RdbmsOperation
Public Constructors
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.
Public Methods
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.
int update(Object... params)
Overridden version of update that adds the given statement parameters to the queue rather than executing them immediately.
Protected Methods
boolean supportsLobParameters()
BatchSqlUpdate does not support BLOB or CLOB parameters.
[Expand]
Inherited Methods
From class org.springframework.jdbc.object.SqlUpdate
From class org.springframework.jdbc.object.SqlOperation
From class org.springframework.jdbc.object.RdbmsOperation
From class java.lang.Object
From interface org.springframework.beans.factory.InitializingBean

Fields

public static int DEFAULT_BATCH_SIZE

Default number of inserts to accumulate before commiting a batch (5000).

Public Constructors

public BatchSqlUpdate ()

Constructor to allow use as a JavaBean. DataSource and SQL must be supplied before compilation and use.

public BatchSqlUpdate (DataSource ds, String sql)

Construct an update object with a given DataSource and SQL.

Parameters
ds DataSource to use to obtain connections
sql SQL statement to execute

public BatchSqlUpdate (DataSource ds, String sql, int[] types)

Construct an update object with a given DataSource, SQL and anonymous parameters.

Parameters
ds DataSource to use to obtain connections
sql SQL statement to execute
types SQL types of the parameters, as defined in the java.sql.Types class
See Also
  • java.sql.Types

public 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.

Parameters
ds DataSource to use to obtain connections
sql SQL statement to execute
types SQL types of the parameters, as defined in the java.sql.Types class
batchSize the number of statements that will trigger an automatic intermediate flush
See Also
  • java.sql.Types

Public Methods

public 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

public int getExecutionCount ()

Return the number of already executed statements.

public int getQueueCount ()

Return the current number of statements or statement parameters in the queue.

public int[] getRowsAffected ()

Return the number of affected rows for all already executed statements. Accumulates all of flush's return values until reset is invoked.

Returns
  • an array of the number of rows affected by each statement
See Also

public void reset ()

Reset the statement parameter queue, the rows affected cache, and the execution count.

public void setBatchSize (int batchSize)

Set the number of statements that will trigger an automatic intermediate flush. 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)

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.

public int update (Object... params)

Overridden version of 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.

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)
See Also

Protected Methods

protected boolean supportsLobParameters ()

BatchSqlUpdate does not support BLOB or CLOB parameters.