SpringBootJPA多表多条件查询(参数可能为空)语句

@Query(value="SELECT c.byname as byname, c.cart as cart,c.phone as phone,c.surname as surname, c.id as id,c.update_time as updateTime,c.head_img as headImg,c.is_blacklist as isBlacklist,c.is_member as isMember,"
+ "c.open_id as openid,c.take_address as takeAddress, c.pay_money as payMoney, "
+ " SUM(culog.pay_money) AS countPayMoney FROM cuser c "
+ "LEFT JOIN cuser_money_log culog ON c.id = culog.cuser_id AND culog.is_pay = 1 "
+ "WHERE IF (:byname is not null, c.byname LIKE CONCAT('%',:byname,'%') , 1 = 1) and IF (:isMember is not null, c.is_member = :isMember , 1 = 1) and IF (:isBlacklist is not null, c.is_blacklist = :isBlacklist , 1 = 1) and "
+ "IF (:phone is not null, c.phone = :phone , 1 = 1)"
+ "GROUP BY c.id LIMIT :PageOne,:PageSize",nativeQuery=true)
List<Map<String, Object>> countByQuery(@Param("byname") String byname,@Param("isMember") Integer isMember,@Param("isBlacklist") Integer isBlacklist,@Param("phone") String phone,@Param("PageOne") Integer PageOne, @Param("PageSize")Integer PageSize);

多表多条件查询并统计金额 JPA

以Mysql数据库为例。
在存储过程中使用判断一个参数,例参数为vtitle

Select a.*
from trn_res_courseware a
where 1 = 1 and
IF (vtitle is NULL, 0 = 0, a.title like CONCAT('%'+vtitle+'%'));

vtitle 是参数。
如果参数为空,则不执行(0=0永远成立),
不为空,则执行 a.title like CONCAT('%'+vtitle+'%')) 查询条件。

类型于mybaties上面的if(为空) 则不进入条件查询

该方式支持多表多条件查询 单表的话JPA有单独的接口可提供多条件查询

posted @   哩个啷个波  阅读(1030)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-11-06 集合怎么转换成数组?(数组怎么转换成集合)
点击右上角即可分享
微信分享提示