首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring :对非实体类执行SQL

Spring :对非实体类执行SQL
EN

Stack Overflow用户
提问于 2016-02-04 17:49:31
回答 1查看 6.9K关注 0票数 1

我试图执行以下操作:我有一些复杂的SQL (使用SUM(距离) distanceSum作为返回列的标识符),它返回一些应该解析到类的值(只包含这些列所需的值)。但是,我只需要内存中的结果,而不是实体。我已经尝试创建一个存储库来使用带有本机= true的@Query注释来执行SQL。但是,存储库不能是自动存储的,可能是因为存储库只针对实体。

那么,是否有某种方式来调整非实体的存储库,或者是否有一种方法,而不是存储库,允许我执行SQL并将结果自动解析为一个对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-04 21:12:36

基本上,正如@dunni所说,您可以使用JdbcTemplate和自己的映射程序将SQL结果转换为Java:

代码语言:javascript
运行
复制
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;
    }
}

同样,在Spring中,您不需要做任何事情,只需将jdbcTemplate添加到Dao类:

代码语言:javascript
运行
复制
@Autowired
private JdbcTemplate jdbcTemplate;
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35208078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档