Java源码示例:org.springframework.jdbc.core.support.AbstractInterruptibleBatchPreparedStatementSetter

示例1
@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();
}
 
示例2
@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();
}
 
示例3
@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();
}
 
示例4
@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();
}
 
示例5
@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();
}
 
示例6
@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();
}
 
示例7
@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();
}
 
示例8
@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();
}