spring data jpa 可以通过在接口中按照规定语法创建一个方法进行增删改查,可以快速开发。
但是一些特殊情况,如按条件查询统计,这个时候通过规定语法还是直接@Query写原生sql都不能解决,因为这个统计的条件不好添加。
百度之后,可以使用EntityManager来解决。
EntityManager 对象在一组实体类与底层数据源之间进行 O/R 映射的管理。它可以用来管理和更新 Entity Bean, 根椐主键查找 Entity Bean, 还可以通过JPQL语句增删改查实体。
首先通过@PersistenceContext注入EntityManager 使用如下 jpa聚合函数(适用于联合查询)最近帮老同事解决一个问题,场景是这样的,查询条件比较多,也就是我们说的联合查询,比如下面的,时间可以选不同的,状态和来源也可以选不同,而且可选可不选
如果这个时候写sql,是不是要各种条件判断,各种纠结,各种难写,各种sql,这个时候大家一般都想到了springdata的jpa貌似很好用,可以直接拼接sql,但是怎么拼接呢,又怎么支持非表字段的展示呢,比如表中一个字段 aaa 好展示,但是查总和sum(aaa) ,怎么把这个作为一个字段展示呢。
不罗嗦了,直接上代码以下语句对应的sql大概是
这个sql,我们分别查到了两个值 status 和数量,那么怎么获取呢
循环一下那个获取的list到这是否全部清晰了呢,这个例子也适用sum,max等其他聚合函数
以上为个人经验,希望能给大家一个参考,也希望大家多多支持七叶笔记。