Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
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;
Expand All @@ -49,21 +50,22 @@

/**
* @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
Expand All @@ -79,6 +81,26 @@ void setup() throws Exception {

// 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);
Expand Down Expand Up @@ -243,7 +265,7 @@ void queryForOptionalWithIndexedParamAndRowMapper() throws Exception {
.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();
Expand Down Expand Up @@ -294,6 +316,27 @@ void queryForObjectWithIndexedParamAndList() {

// 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);
Expand Down Expand Up @@ -427,7 +470,7 @@ void queryForOptionalWithNamedParamAndRowMapper() throws Exception {
.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();
Expand Down Expand Up @@ -610,7 +653,7 @@ public BigInteger convert(String source) {
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();
Expand Down
Loading