zoukankan      html  css  js  c++  java
  • 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有单独的接口可提供多条件查询

  • 相关阅读:
    23种设计模式之单例模式
    6大设计原则之里氏替换原则
    6大设计原则之依赖倒置原则
    6大设计原则之接口隔离原则
    6大设计原则之迪米特法则
    Java日志第14天 2020.7.19
    Java日志第15天 2020.7.20
    Java日志第13天 2020.7.18
    Python 语音识别字幕生成器
    python list,tuple,str有序问题
  • 原文地址:https://www.cnblogs.com/laixin09/p/9776868.html
Copyright © 2011-2022 走看看