Java 类org.springframework.jdbc.core.support.AbstractInterruptibleBatchPreparedStatementSetter 实例源码

项目:spring4-understanding    文件:JdbcTemplateTests.java   
@Test
public void testInterruptibleBatchUpdateWithBaseClass() throws Exception {
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final int[] ids = new int[] { 100, 200 };
    final int[] rowsAffected = new int[] { 1, 2 };

    given(this.preparedStatement.executeBatch()).willReturn(rowsAffected);
    mockDatabaseMetaData(true);

    BatchPreparedStatementSetter setter =
            new AbstractInterruptibleBatchPreparedStatementSetter() {
                @Override
                protected boolean setValuesIfAvailable(PreparedStatement ps, int i) throws SQLException {
                    if (i < ids.length) {
                        ps.setInt(1, ids[i]);
                        return true;
                    }
                    else {
                        return false;
                    }
                }
            };

    JdbcTemplate template = new JdbcTemplate(this.dataSource, false);

    int[] actualRowsAffected = template.batchUpdate(sql, setter);
    assertTrue("executed 2 updates", actualRowsAffected.length == 2);
    assertEquals(rowsAffected[0], actualRowsAffected[0]);
    assertEquals(rowsAffected[1], actualRowsAffected[1]);

    verify(this.preparedStatement, times(2)).addBatch();
    verify(this.preparedStatement).setInt(1, ids[0]);
    verify(this.preparedStatement).setInt(1, ids[1]);
    verify(this.preparedStatement).close();
    verify(this.connection, atLeastOnce()).close();
}
项目:spring4-understanding    文件:JdbcTemplateTests.java   
@Test
public void testInterruptibleBatchUpdateWithBaseClassAndNoBatchSupport() throws Exception {
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final int[] ids = new int[] { 100, 200 };
    final int[] rowsAffected = new int[] { 1, 2 };

    given(this.preparedStatement.executeUpdate()).willReturn(rowsAffected[0], rowsAffected[1]);
    mockDatabaseMetaData(false);

    BatchPreparedStatementSetter setter =
            new AbstractInterruptibleBatchPreparedStatementSetter() {
                @Override
                protected boolean setValuesIfAvailable(PreparedStatement ps, int i) throws SQLException {
                    if (i < ids.length) {
                        ps.setInt(1, ids[i]);
                        return true;
                    }
                    else {
                        return false;
                    }
                }
            };

    JdbcTemplate template = new JdbcTemplate(this.dataSource, false);

    int[] actualRowsAffected = template.batchUpdate(sql, setter);
    assertTrue("executed 2 updates", actualRowsAffected.length == 2);
    assertEquals(rowsAffected[0], actualRowsAffected[0]);
    assertEquals(rowsAffected[1], actualRowsAffected[1]);

    verify(this.preparedStatement, never()).addBatch();
    verify(this.preparedStatement).setInt(1, ids[0]);
    verify(this.preparedStatement).setInt(1, ids[1]);
    verify(this.preparedStatement).close();
    verify(this.connection, atLeastOnce()).close();
}
项目:class-guard    文件:JdbcTemplateTests.java   
@Test
public void testInterruptibleBatchUpdateWithBaseClass() throws Exception {
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final int[] ids = new int[] { 100, 200 };
    final int[] rowsAffected = new int[] { 1, 2 };

    given(this.preparedStatement.executeBatch()).willReturn(rowsAffected);
    mockDatabaseMetaData(true);

    BatchPreparedStatementSetter setter =
            new AbstractInterruptibleBatchPreparedStatementSetter() {
                @Override
                protected boolean setValuesIfAvailable(PreparedStatement ps, int i) throws SQLException {
                    if (i < ids.length) {
                        ps.setInt(1, ids[i]);
                        return true;
                    }
                    else {
                        return false;
                    }
                }
            };

    JdbcTemplate template = new JdbcTemplate(this.dataSource, false);

    int[] actualRowsAffected = template.batchUpdate(sql, setter);
    assertTrue("executed 2 updates", actualRowsAffected.length == 2);
    assertEquals(rowsAffected[0], actualRowsAffected[0]);
    assertEquals(rowsAffected[1], actualRowsAffected[1]);

    verify(this.preparedStatement, times(2)).addBatch();
    verify(this.preparedStatement).setInt(1, ids[0]);
    verify(this.preparedStatement).setInt(1, ids[1]);
    verify(this.preparedStatement).close();
    verify(this.connection, atLeastOnce()).close();
}
项目:class-guard    文件:JdbcTemplateTests.java   
@Test
public void testInterruptibleBatchUpdateWithBaseClassAndNoBatchSupport() throws Exception {
    final String sql = "UPDATE NOSUCHTABLE SET DATE_DISPATCHED = SYSDATE WHERE ID = ?";
    final int[] ids = new int[] { 100, 200 };
    final int[] rowsAffected = new int[] { 1, 2 };

    given(this.preparedStatement.executeUpdate()).willReturn(rowsAffected[0], rowsAffected[1]);
    mockDatabaseMetaData(false);

    BatchPreparedStatementSetter setter =
            new AbstractInterruptibleBatchPreparedStatementSetter() {
                @Override
                protected boolean setValuesIfAvailable(PreparedStatement ps, int i) throws SQLException {
                    if (i < ids.length) {
                        ps.setInt(1, ids[i]);
                        return true;
                    }
                    else {
                        return false;
                    }
                }
            };

    JdbcTemplate template = new JdbcTemplate(this.dataSource, false);

    int[] actualRowsAffected = template.batchUpdate(sql, setter);
    assertTrue("executed 2 updates", actualRowsAffected.length == 2);
    assertEquals(rowsAffected[0], actualRowsAffected[0]);
    assertEquals(rowsAffected[1], actualRowsAffected[1]);

    verify(this.preparedStatement, never()).addBatch();
    verify(this.preparedStatement).setInt(1, ids[0]);
    verify(this.preparedStatement).setInt(1, ids[1]);
    verify(this.preparedStatement).close();
    verify(this.connection, atLeastOnce()).close();
}