mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-23 22:59:03 +00:00
Add tests for querying SqlRowSet using JdbcClient
And polish JdbcClientQueryTests a bit. Closes gh-37313 Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
+52
-9
@@ -38,6 +38,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.core.convert.converter.Converter;
|
||||
import org.springframework.core.convert.support.GenericConversionService;
|
||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||
import org.springframework.jdbc.support.rowset.SqlRowSet;
|
||||
import org.springframework.util.NumberUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -49,21 +50,22 @@ import static org.mockito.Mockito.verify;
|
||||
|
||||
/**
|
||||
* @author Juergen Hoeller
|
||||
* @author Yanming Zhou
|
||||
* @since 6.1
|
||||
*/
|
||||
class JdbcClientQueryTests {
|
||||
|
||||
private DataSource dataSource = mock();
|
||||
private final DataSource dataSource = mock();
|
||||
|
||||
private Connection connection = mock();
|
||||
private final Connection connection = mock();
|
||||
|
||||
private PreparedStatement preparedStatement = mock();
|
||||
private final PreparedStatement preparedStatement = mock();
|
||||
|
||||
private ResultSet resultSet = mock();
|
||||
private final ResultSet resultSet = mock();
|
||||
|
||||
private ResultSetMetaData resultSetMetaData = mock();
|
||||
private final ResultSetMetaData resultSetMetaData = mock();
|
||||
|
||||
private JdbcClient client = JdbcClient.create(dataSource);
|
||||
private final JdbcClient client = JdbcClient.create(dataSource);
|
||||
|
||||
|
||||
@BeforeEach
|
||||
@@ -79,6 +81,26 @@ class JdbcClientQueryTests {
|
||||
|
||||
// Indexed parameters
|
||||
|
||||
@Test
|
||||
void queryForRowSetWithIndexedParam() throws Exception {
|
||||
given(resultSet.next()).willReturn(true, true, false);
|
||||
given(resultSet.getObject(1)).willReturn(11, 12);
|
||||
|
||||
SqlRowSet rowSet = client.sql("SELECT AGE FROM CUSTMR WHERE ID < ?")
|
||||
.param(3).query().rowSet();
|
||||
|
||||
assertThat(rowSet.next()).isTrue();
|
||||
assertThat(rowSet.getInt("age")).as("First row is Integer").isEqualTo(11);
|
||||
assertThat(rowSet.next()).isTrue();
|
||||
assertThat(rowSet.getInt("age")).as("Second row is Integer").isEqualTo(12);
|
||||
|
||||
verify(connection).prepareStatement("SELECT AGE FROM CUSTMR WHERE ID < ?");
|
||||
verify(preparedStatement).setObject(1, 3);
|
||||
verify(resultSet).close();
|
||||
verify(preparedStatement).close();
|
||||
verify(connection).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void queryForListWithIndexedParam() throws Exception {
|
||||
given(resultSet.next()).willReturn(true, true, false);
|
||||
@@ -243,7 +265,7 @@ class JdbcClientQueryTests {
|
||||
.query((rs, rowNum) -> rs.getInt(1))
|
||||
.optional();
|
||||
|
||||
assertThat(value.get()).isEqualTo(22);
|
||||
assertThat(value).contains(22);
|
||||
verify(connection).prepareStatement("SELECT AGE FROM CUSTMR WHERE ID = ?");
|
||||
verify(preparedStatement).setObject(1, 3);
|
||||
verify(resultSet).close();
|
||||
@@ -294,6 +316,27 @@ class JdbcClientQueryTests {
|
||||
|
||||
// Named parameters
|
||||
|
||||
@Test
|
||||
void queryForRowSetWithNamedParam() throws Exception {
|
||||
given(resultSet.next()).willReturn(true, true, false);
|
||||
given(resultSet.getObject(1)).willReturn(11, 12);
|
||||
|
||||
SqlRowSet rowSet = client.sql("SELECT AGE FROM CUSTMR WHERE ID < :id")
|
||||
.param("id", 3)
|
||||
.query().rowSet();
|
||||
|
||||
assertThat(rowSet.next()).isTrue();
|
||||
assertThat(rowSet.getInt("age")).as("First row is Integer").isEqualTo(11);
|
||||
assertThat(rowSet.next()).isTrue();
|
||||
assertThat(rowSet.getInt("age")).as("Second row is Integer").isEqualTo(12);
|
||||
|
||||
verify(connection).prepareStatement("SELECT AGE FROM CUSTMR WHERE ID < ?");
|
||||
verify(preparedStatement).setObject(1, 3);
|
||||
verify(resultSet).close();
|
||||
verify(preparedStatement).close();
|
||||
verify(connection).close();
|
||||
}
|
||||
|
||||
@Test
|
||||
void queryForListWithNamedParam() throws Exception {
|
||||
given(resultSet.next()).willReturn(true, true, false);
|
||||
@@ -427,7 +470,7 @@ class JdbcClientQueryTests {
|
||||
.query((rs, rowNum) -> rs.getInt(1))
|
||||
.optional();
|
||||
|
||||
assertThat(value.get()).isEqualTo(22);
|
||||
assertThat(value).contains(22);
|
||||
verify(connection).prepareStatement("SELECT AGE FROM CUSTMR WHERE ID = ?");
|
||||
verify(preparedStatement).setObject(1, 3);
|
||||
verify(resultSet).close();
|
||||
@@ -610,7 +653,7 @@ class JdbcClientQueryTests {
|
||||
return NumberUtils.parseNumber(source.substring(3), BigInteger.class);
|
||||
}
|
||||
});
|
||||
client = JdbcClient.create(new NamedParameterJdbcTemplate(dataSource), conversionService);
|
||||
JdbcClient client = JdbcClient.create(new NamedParameterJdbcTemplate(dataSource), conversionService);
|
||||
AgeFieldHolder value = client.sql("SELECT AGE FROM CUSTMR WHERE ID = :id")
|
||||
.param("id", 3)
|
||||
.query(AgeFieldHolder.class).single();
|
||||
|
||||
Reference in New Issue
Block a user