Browse Source

DATAJDBC-620 - The default RowMapper now gets passed to ResultSetConstructor.

Original pull request: #256.
pull/1035/head
Jens Schauder 5 years ago committed by Mark Paluch
parent
commit
e3b46ed883
No known key found for this signature in database
GPG Key ID: 4406B84C1661DCD1
  1. 2
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java
  2. 29
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java

2
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java

@ -77,7 +77,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery { @@ -77,7 +77,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
RowMapper<Object> rowMapper = determineRowMapper(defaultRowMapper);
return getQueryExecution( //
queryMethod, //
determineResultSetExtractor(rowMapper != defaultRowMapper ? rowMapper : null), //
determineResultSetExtractor(rowMapper), //
rowMapper //
);});
}

29
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/StringBasedJdbcQueryMappingConfigurationIntegrationTests.java

@ -34,6 +34,7 @@ import org.springframework.context.annotation.Configuration; @@ -34,6 +34,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.dao.DataAccessException;
import org.springframework.data.annotation.Id;
import org.springframework.data.jdbc.core.convert.EntityRowMapper;
import org.springframework.data.jdbc.repository.config.DefaultQueryMappingConfiguration;
import org.springframework.data.jdbc.repository.config.EnableJdbcRepositories;
import org.springframework.data.jdbc.repository.query.Query;
@ -134,6 +135,20 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests { @@ -134,6 +135,20 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests {
}
}
public static class RowMapperResultSetExtractor implements ResultSetExtractor<RowMapper> {
final RowMapper rowMapper;
public RowMapperResultSetExtractor(RowMapper rowMapper) {
this.rowMapper = rowMapper;
}
@Override
public RowMapper extractData(ResultSet rs) throws SQLException, DataAccessException {
return rowMapper;
}
}
interface CarRepository extends CrudRepository<Car, Long> {
@Query(value = "select * from car", resultSetExtractorClass = CarResultSetExtractor.class)
@ -144,6 +159,11 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests { @@ -144,6 +159,11 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests {
@Query(value = "select model from car", rowMapperRef = "CustomRowMapperBean")
List<String> findByNameWithRowMapperBean();
@Query(value = "select * from car", resultSetExtractorClass = RowMapperResultSetExtractor.class)
RowMapper customFindAllWithRowMapper();
}
@Autowired NamedParameterJdbcTemplate template;
@ -179,4 +199,13 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests { @@ -179,4 +199,13 @@ public class StringBasedJdbcQueryMappingConfigurationIntegrationTests {
assertThat(cars).allMatch(car -> VALUE_PROCESSED_BY_SERVICE.equals(car.getModel()));
}
@Test // DATAJDBC-620
void defaultRowMapperGetsInjectedIntoCustomResultSetExtractor() {
RowMapper rowMapper = carRepository.customFindAllWithRowMapper();
assertThat(rowMapper).isNotNull();
}
}

Loading…
Cancel
Save