use of java.sql.PreparedStatement in project sharding-jdbc by dangdangdotcom.
the class PreparedStatementExecutorTest method assertExecuteForMultiplePreparedStatementsSuccessWithDML.
@Test
public void assertExecuteForMultiplePreparedStatementsSuccessWithDML() throws SQLException {
PreparedStatement preparedStatement1 = mock(PreparedStatement.class);
PreparedStatementExecutorWrapper wrapper1 = createPreparedStatementExecutorWrapperForDML(preparedStatement1, "ds_0");
PreparedStatement preparedStatement2 = mock(PreparedStatement.class);
PreparedStatementExecutorWrapper wrapper2 = createPreparedStatementExecutorWrapperForDML(preparedStatement2, "ds_1");
when(preparedStatement1.execute()).thenReturn(false);
when(preparedStatement2.execute()).thenReturn(false);
when(preparedStatement1.getConnection()).thenReturn(mock(Connection.class));
when(preparedStatement2.getConnection()).thenReturn(mock(Connection.class));
PreparedStatementExecutor actual = new PreparedStatementExecutor(executorEngine, Arrays.asList(wrapper1, wrapper2));
assertFalse(actual.execute());
verify(preparedStatement1).execute();
verify(preparedStatement2).execute();
verify(preparedStatement1).getConnection();
verify(preparedStatement2).getConnection();
verify(eventCaller, times(2)).verifyDataSource("ds_0");
verify(eventCaller, times(2)).verifyDataSource("ds_1");
verify(eventCaller, times(4)).verifySQL("DELETE FROM dual");
verify(eventCaller, times(4)).verifyParameters(Collections.emptyList());
verify(eventCaller, times(2)).verifyEventExecutionType(EventExecutionType.BEFORE_EXECUTE);
verify(eventCaller, times(2)).verifyEventExecutionType(EventExecutionType.EXECUTE_SUCCESS);
verify(eventCaller, times(0)).verifyException(null);
}
use of java.sql.PreparedStatement in project sharding-jdbc by dangdangdotcom.
the class PreparedStatementExecutorTest method assertExecuteQueryForSinglePreparedStatementFailure.
@Test
public void assertExecuteQueryForSinglePreparedStatementFailure() throws SQLException {
PreparedStatement preparedStatement = mock(PreparedStatement.class);
PreparedStatementExecutorWrapper wrapper = createPreparedStatementExecutorWrapperForDQL(preparedStatement, "ds_0");
SQLException exp = new SQLException();
when(preparedStatement.executeQuery()).thenThrow(exp);
PreparedStatementExecutor actual = new PreparedStatementExecutor(executorEngine, Collections.singleton(wrapper));
assertThat(actual.executeQuery(), is(Collections.singletonList((ResultSet) null)));
verify(preparedStatement).executeQuery();
verify(eventCaller, times(2)).verifyDataSource("ds_0");
verify(eventCaller, times(2)).verifySQL("SELECT * FROM dual");
verify(eventCaller, times(2)).verifyParameters(Collections.emptyList());
verify(eventCaller).verifyEventExecutionType(EventExecutionType.BEFORE_EXECUTE);
verify(eventCaller).verifyEventExecutionType(EventExecutionType.EXECUTE_FAILURE);
verify(eventCaller).verifyException(exp);
}
use of java.sql.PreparedStatement in project sharding-jdbc by dangdangdotcom.
the class ShardingTablesOnlyForPStatementWithDMLTest method assertUpdateWithoutAlias.
@Test
public void assertUpdateWithoutAlias() throws SQLException, DatabaseUnitException {
ShardingDataSource shardingDataSource = getShardingDataSource();
String sql = "UPDATE `t_order` SET `status` = ? WHERE `order_id` = ? AND `user_id` = ?";
try (Connection connection = shardingDataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
for (int i = 10; i < 12; i++) {
for (int j = 0; j < 10; j++) {
preparedStatement.setString(1, "updated");
preparedStatement.setInt(2, i * 100 + j);
preparedStatement.setInt(3, i);
assertThat(preparedStatement.executeUpdate(), is(1));
}
}
}
assertDataSet("update", "updated");
}
use of java.sql.PreparedStatement in project sharding-jdbc by dangdangdotcom.
the class RoutingDatabaseOnlyWithHintForDMLTest method assertInsertWithoutPlaceholder.
@Test
public void assertInsertWithoutPlaceholder() throws SQLException, DatabaseUnitException {
String sql = "INSERT INTO `t_order` VALUES (%s, %s, 'insert')";
for (int i = 1; i <= 10; i++) {
try (DynamicShardingValueHelper helper = new DynamicDatabaseShardingValueHelper(i);
Connection connection = shardingDataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(String.format(sql, i, i))) {
preparedStatement.executeUpdate();
}
}
assertDataSet("insert", "insert");
}
use of java.sql.PreparedStatement in project sharding-jdbc by dangdangdotcom.
the class RoutingDatabaseOnlyWithHintForDMLTest method assertInsertWithAllPlaceholders.
@Test
public void assertInsertWithAllPlaceholders() throws SQLException, DatabaseUnitException {
String sql = "INSERT INTO `t_order` VALUES (?, ?, ?)";
for (int i = 1; i <= 10; i++) {
try (DynamicShardingValueHelper helper = new DynamicDatabaseShardingValueHelper(i);
Connection connection = shardingDataSource.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
preparedStatement.setInt(1, i);
preparedStatement.setInt(2, i);
preparedStatement.setString(3, "insert");
preparedStatement.executeUpdate();
}
}
assertDataSet("insert", "insert");
}
Aggregations