Dis*_*ame 1 spring spring-data spring-data-jpa spring-boot
我要执行的操作如下:我有一些复杂的SQL(使用SUM(distance)distanceSum作为返回列的标识符),该SQL返回一些应该解析为类的值(仅包含这些列所需的值) 。但是,我只需要结果在内存中,而不是实体。我已经尝试创建一个存储库,以使用本机= true的@Query注释执行SQL。但是,存储库无法自动装配,可能是因为存储库仅用于实体。
因此,有什么办法可以调整非实体的存储库,或者有什么其他方法可以使我执行SQL并将结果自动解析为对象。
基本上就像@dunni所说的,您可以将JdbcTemplate搭配您自己的映射器使用,将SQL结果转换为Java POJO:
public CustomResult getCustomResult(){
final String complexSql = "SELECT SUM(distance) as distanceSum....";
final CustomResult customResult = (CustomResult) jdbcTemplate.queryForObject(complexSql, new CustomResultRowMapper());
return customResult;
}
public class CustomResultRowMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
CustomResult customResult = new CustomResult();
customResult.setDistanceSum(rs.getInt("distanceSum"));
...
return customResult;
}
}
Run Code Online (Sandbox Code Playgroud)
同样在Spring Boot中,您不需要执行任何操作,只需将您的内容添加jdbcTemplate到Dao类中即可:
@Autowired
private JdbcTemplate jdbcTemplate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4516 次 |
| 最近记录: |