Example usage for org.springframework.jdbc.core JdbcTemplate batchUpdate

List of usage examples for org.springframework.jdbc.core JdbcTemplate batchUpdate

Introduction

In this page you can find the example usage for org.springframework.jdbc.core JdbcTemplate batchUpdate.

Prototype

@Override
    public int[] batchUpdate(String sql, List<Object[]> batchArgs, final int[] argTypes)
            throws DataAccessException 

Source Link

Usage

From source file:org.springframework.jdbc.core.JdbcTemplateTests.java

public void testBatchUpdateWithListOfObjectArraysPlusTypeInfo() throws Exception {

    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final List<Object[]> ids = new ArrayList<Object[]>();
    ids.add(new Object[] { 100 });
    ids.add(new Object[] { 200 });
    final int[] sqlTypes = new int[] { Types.NUMERIC };
    final int[] rowsAffected = new int[] { 1, 2 };

    MockControl ctrlDataSource = MockControl.createControl(DataSource.class);
    DataSource mockDataSource = (DataSource) ctrlDataSource.getMock();
    MockControl ctrlConnection = MockControl.createControl(Connection.class);
    Connection mockConnection = (Connection) ctrlConnection.getMock();
    MockControl ctrlPreparedStatement = MockControl.createControl(PreparedStatement.class);
    PreparedStatement mockPreparedStatement = (PreparedStatement) ctrlPreparedStatement.getMock();
    MockControl ctrlDatabaseMetaData = MockControl.createControl(DatabaseMetaData.class);
    DatabaseMetaData mockDatabaseMetaData = (DatabaseMetaData) ctrlDatabaseMetaData.getMock();

    BatchUpdateTestHelper.prepareBatchUpdateMocks(sql, ids, sqlTypes, rowsAffected, ctrlDataSource,
            mockDataSource, ctrlConnection, mockConnection, ctrlPreparedStatement, mockPreparedStatement,
            ctrlDatabaseMetaData, mockDatabaseMetaData);

    BatchUpdateTestHelper.replayBatchUpdateMocks(ctrlDataSource, ctrlConnection, ctrlPreparedStatement,
            ctrlDatabaseMetaData);// w  w  w.j  av a  2  s . c o m

    JdbcTemplate template = new JdbcTemplate(mockDataSource, false);

    int[] actualRowsAffected = template.batchUpdate(sql, ids, sqlTypes);

    assertTrue("executed 2 updates", actualRowsAffected.length == 2);
    assertEquals(rowsAffected[0], actualRowsAffected[0]);
    assertEquals(rowsAffected[1], actualRowsAffected[1]);

    BatchUpdateTestHelper.verifyBatchUpdateMocks(ctrlPreparedStatement, ctrlDatabaseMetaData);
}