Spring JPA组合查询,根据条件查询

`Spring JPA组合查询,根据条件查询

接手一个项目,数据库处理用的JPA,据留下这个摊子的人说很好用,大概用了一下,在一些基本的增删改查上面确实方便,不用写SQL,但今天遇到了一个稍微复杂一点的需求,之前Mybatis是用的拼接SQL语句或者在xml里面用这种方式,在JPA这里好像没这个功能,不过实现方式也不难,用SQL里面自带的IF语句就行
废话不多说,直接上代码

@Query(nativeQuery = true, value = "SELECT COUNT(1) FROM trade_info t LEFT JOIN role_info r ON t.role_id = r.id " +
            "WHERE t.order_pay_state <> 1 AND r.nick_name LIKE :nickName" +
            "AND IF(:platform=0, t.pay_type<>0, t.pay_type=:platform) " +
            "AND IF(:maxTime=0, t.create_time IS NOT NULL, UNIX_TIMESTAMP(t.create_time) <= :maxTime) " +
            "AND IF(:minTime=0, t.create_time IS NOT NULL, UNIX_TIMESTAMP(t.create_time) >= :minTime) ")
    public int findFailCount(@Param("nickName") String nickName,
                             @Param("platform") Integer platform,
                             @Param("maxTime") Long maxTime,
                             @Param("minTime") Long minTime);
                             ```
不过这里要注意几个点
1.如果加了@Param这个注解,那SQL里面一定要用冒号来引入参数,如 :key
2.如果没有加@Param,那需要用问号来引入参数,如 ?key


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值