• mysql - <choose>多条件判断 (等同于switch,case,default)


    使用介绍

    choose 标签作用是通过条件判断来拼接 SQL 语句,类似于 Java 中的 switch 语句,从上到下,当有匹配的条件时,跳出 choose 语句;如果所有条件都不成立则执行 otherwise 标签中的内容

    注意最先需要判断的条件要放在前面,当匹配到某个条件时,就不会判断后面的语句了。

    语法

    1. <choose>
    2. <when test=条件1>
    3. ...
    4. </when>
    5. <when test=条件2>
    6. ...
    7. </when>
    8. <when test=条件3>
    9. ...
    10. </when>
    11. ...
    12. <otherwise>
    13. ...
    14. </otherwise>
    15. </choose>

    1. <select id="selectDistributeUserIds" resultType="java.lang.Integer">
    2. select u.id from users u
    3. <where>
    4. u.belongDistributorUserId is not null
    5. <if test="registerStart!=null">and #{registerStart} &lt;= u.createdAt</if>
    6. <if test="registerEnd!=null">and #{registerEnd} >= u.createdAt</if>
    7. <if test="id!=null">and u.id=#{id}</if>
    8. <if test="status!=null">and u.status=#{status}</if>
    9. <if test="username!=null and username!=''">and u.username like concat('%',#{username},'%')</if>
    10. <if test="email!=null and email!=''">and u.email like concat('%',#{email},'%')</if>
    11. <if test="phone!=null and phone!=''">and u.phone like concat('%',#{phone},'%')</if>
    12. <if test="remark!=null and remark!=''">and u.remark like concat('%',#{remark},'%')</if>
    13. <if test="distributorUrl!=null and distributorUrl!=''">and u.distributorUrl =#{distributorUrl}</if>
    14. <if test="belongCashoutStatus!=null">and u.belongCashoutStatus=#{belongCashoutStatus}</if>
    15. <choose>
    16. <when test="distributorLevel!=null">
    17. <if test="distributorLevel==1">
    18. <if test="belongFirstUserId!=null">and u.belongFirstUserId=#{belongFirstUserId} and u.belongSecondUserId is not null</if>
    19. </if>
    20. <if test="distributorLevel==2">
    21. <if test="belongSecondUserId!=null">and u.belongSecondUserId=#{belongSecondUserId} and u.belongThirdUserId is not null</if>
    22. </if>
    23. </when>
    24. <otherwise>
    25. <if test="belongFirstUserId!=null">and u.belongFirstUserId=#{belongFirstUserId}</if>
    26. <if test="belongSecondUserId!=null">and u.belongSecondUserId=#{belongSecondUserId}</if>
    27. <if test="belongThirdUserId!=null">and u.belongThirdUserId=#{belongThirdUserId}</if>
    28. </otherwise>
    29. </choose>
    30. </where>
    31. order by u.createdAt desc
    32. </select>

     

  • 相关阅读:
    self-attention学习笔记
    java计算机毕业设计健康饮食推荐系统源码+mysql数据库+系统+lw文档+部署
    技术人员如何培养业务的敏感度?掌握原动力和方法
    一种KV存储的GC优化实践
    Sublime Text 下载及配置
    Linux网络:网络层IP协议 链路层MAC协议
    (八)MyBatis中参数的处理
    API常用类(2)String类
    Python全栈开发【基础-10】流程控制之for循环
    基本数据类型和对应的包装类
  • 原文地址:https://blog.csdn.net/weixin_43652507/article/details/134048918