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


你可能感兴趣的:(java)