温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringJPA repository nativeQuery如何自定义返回对象Projection

发布时间:2021-10-19 18:02:25 来源:亿速云 阅读:163 作者:柒染 栏目:大数据

SpringJPA repository nativeQuery如何自定义返回对象Projection ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Spring JPA 封装的一套CRUD的操作大大简化了开发流程,提高了开发效率。但是不免会有一些特殊查询,需要自己写sql,返回自定义字段,需要用自定义的对象接收,有什么好的方法呢?

 通过网上查询大多数其他人的解决方案,找到了官网对应的文档:https://www.baeldung.com/spring-data-jpa-projections

简单的来说就是 在repository 里边自定义的方法 ,在需要用自定义对象接收时,需要接收对象问interface 类型,并且 里边定义了所需要接收字段的get方法,比如需要接收name字段,需要定义 String getName(); 

@Repository
public interface ItemRepository extends JpaRepository<Item, Integer>{

    /**
     * 批量查询用户时间段内 总分
     */
    @Query(nativeQuery = true, value = "select user_info_id userId, sum(score_val) score FROM tb_item where is_del = 0 and `status` = 1 and user_info_id in (:userIds) and end_date BETWEEN :startDate and :endDate GROUP BY user_info_id")
    List<ItemProjection> sumUserScore(@Param("userIds") List<Integer> userIds, @Param("startDate") Date startDate, @Param("endDate") Date endDate);
}

//自定义的接收对象
//ItemProjection:
public interface ItemProjection {
    Integer getUserId();
    BigDecimal getScore();
}

非常的清晰明了,这是网络上最常用的,也是比较简单的一种解决方案

当然了还有一种我自己的解决方案(至少我没从网上搜到~_~)

就是自定义converter ,想使用什么接收就使用什么接收!因为这个方案是在 连一个interface都不想建的“懒惰”的程序员的吐槽下刚诞生不久,就不在这里说了。

关于SpringJPA repository nativeQuery如何自定义返回对象Projection 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI