Example usage for org.springframework.jdbc.core.namedparam NamedParameterJdbcTemplate batchUpdate

List of usage examples for org.springframework.jdbc.core.namedparam NamedParameterJdbcTemplate batchUpdate

Introduction

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

Prototype

@Override
    public int[] batchUpdate(String sql, SqlParameterSource[] batchArgs) 

Source Link

Usage

From source file:alfio.manager.system.DataMigrator.java

private static void performPriceMigration(String updateStatement, List<MapSqlParameterSource> data,
        NamedParameterJdbcTemplate jdbc) {
    int size = data.size();
    jdbc.batchUpdate(updateStatement, data.toArray(new MapSqlParameterSource[size]));
    log.debug("{} records updated", size);
}

From source file:org.smart.migrate.dao.impl.DefaultImportDao.java

@Override
public void saveTargetData(TableSetting tableSetting, List<Map<String, Object>> targetDataList) {

    String sql = "INSERT INTO " + tableSetting.getTargetTable() + " ("
            + SettingUtils.getTargetFields(tableSetting) + ")";
    sql += " VALUES (" + SettingUtils.getTargetPreparedFields(tableSetting) + ")";

    NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(targetJdbcTemplate);
    List<MapSqlParameterSource> parameterSources = new ArrayList<MapSqlParameterSource>();
    for (Map<String, Object> targetData : targetDataList) {
        MapSqlParameterSource psource = new MapSqlParameterSource();
        psource.addValues(targetData);/*w  w  w .  j  a  v  a  2s  .  com*/
        parameterSources.add(psource);
    }

    namedParameterJdbcTemplate.batchUpdate(sql, parameterSources.toArray(new MapSqlParameterSource[0]));
}

From source file:org.tradex.jdbc.JDBCHelper.java

/**
 * Batch executes the update define in the passed sql 
 * @param sql The sql//from  w  ww  .  ja  v a  2 s  . c  o  m
 * @param bindSets An array of bind value arrays
 * @return an array containing the numbers of rows affected by each update in the batch
 */
public int[] batchExecute(CharSequence sql, Object[]... bindSets) {
    NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(ds);
    SqlParameterSource[] sps = new SqlParameterSource[bindSets.length];
    for (int i = 0; i < bindSets.length; i++) {
        sps[i] = getBinds(sql.toString().trim().toUpperCase(), bindSets[i]);
    }
    return template.batchUpdate(sql.toString(), sps);
}

From source file:org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplateTests.java

public void testBatchUpdateWithPlainMap() throws Exception {

    final String sqlToUse = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = :id";
    final Map[] ids = new Map[2];
    ids[0] = Collections.singletonMap("id", 100);
    ids[1] = Collections.singletonMap("id", 200);
    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(sqlToUse, ids, null, rowsAffected, ctrlDataSource,
            mockDataSource, ctrlConnection, mockConnection, ctrlPreparedStatement, mockPreparedStatement,
            ctrlDatabaseMetaData, mockDatabaseMetaData);

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

    JdbcTemplate template = new JdbcTemplate(mockDataSource, false);
    NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(template);

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

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

    BatchUpdateTestHelper.verifyBatchUpdateMocks(ctrlPreparedStatement, ctrlDatabaseMetaData);

}

From source file:org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplateTests.java

public void testBatchUpdateWithSqlParameterSource() throws Exception {

    final String sqlToUse = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = :id";
    final SqlParameterSource[] ids = new SqlParameterSource[2];
    ids[0] = new MapSqlParameterSource("id", 100);
    ids[1] = new MapSqlParameterSource("id", 200);
    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(sqlToUse, ids, null, rowsAffected, ctrlDataSource,
            mockDataSource, ctrlConnection, mockConnection, ctrlPreparedStatement, mockPreparedStatement,
            ctrlDatabaseMetaData, mockDatabaseMetaData);

    BatchUpdateTestHelper.replayBatchUpdateMocks(ctrlDataSource, ctrlConnection, ctrlPreparedStatement,
            ctrlDatabaseMetaData);//ww w.java  2  s .  co  m

    JdbcTemplate template = new JdbcTemplate(mockDataSource, false);
    NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(template);

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

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

    BatchUpdateTestHelper.verifyBatchUpdateMocks(ctrlPreparedStatement, ctrlDatabaseMetaData);

}

From source file:org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplateTests.java

public void testBatchUpdateWithSqlParameterSourcePlusTypeInfo() throws Exception {

    final String sqlToUse = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = :id";
    final SqlParameterSource[] ids = new SqlParameterSource[2];
    ids[0] = new MapSqlParameterSource().addValue("id", 100, Types.NUMERIC);
    ids[1] = new MapSqlParameterSource().addValue("id", 200, Types.NUMERIC);
    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(sqlToUse, ids, sqlTypes, rowsAffected, ctrlDataSource,
            mockDataSource, ctrlConnection, mockConnection, ctrlPreparedStatement, mockPreparedStatement,
            ctrlDatabaseMetaData, mockDatabaseMetaData);

    BatchUpdateTestHelper.replayBatchUpdateMocks(ctrlDataSource, ctrlConnection, ctrlPreparedStatement,
            ctrlDatabaseMetaData);//from ww  w . ja v  a2 s  . c  o m

    JdbcTemplate template = new JdbcTemplate(mockDataSource, false);
    NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(template);

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

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

    BatchUpdateTestHelper.verifyBatchUpdateMocks(ctrlPreparedStatement, ctrlDatabaseMetaData);

}