zoukankan      html  css  js  c++  java
  • Mybatis choose元素的用法

    Mybatis choose元素的用法

    项目遇到一个需求,需要实现动态 or 条件查询, 已知动态 and 查询使用 <if>元素,查询了官网,<choose>元素刚好能满足动态 or需求。

    choose 介绍

    有时候,我们不需要使用到所有的条件,只要满足其中的一个条件即可。<choose>元素为此而生,它类似 Java 的 switch 语句,具有高度的相似性。choose元素就好比 switch在最外层,<choose>元素下还有<when><otherwise>两个元素,<when>元素类似于case,而<otherwise>则类似于default

    官网相关介绍:https://mybatis.org/mybatis-3/zh/dynamic-sql.html

    choose 例子

    <select id="selectCount" resultType="java.lang.Integer">
        SELECT COUNT(*)
        FROM
        project_development pd
        LEFT JOIN business_customer bc ON bc.id = pd.customer_id
        LEFT JOIN base_project bp ON bp.id = pd.project_id
        WHERE
        pd.WORK = 1
        <if test="id != null">
            and pd.id = #{id}
        </if>
        <choose>
            <when test="sort != null">
                order by pd.sort desc,pd.name
            </when>
            <otherwise>
                order by pd.start_date desc,pd.status desc,pd.progress desc,pd.id desc
            </otherwise>
        </choose>
    </select>
    

    sort参数不为空时,执行 <when>元素下的排序,<when>元素可以同时存在多个,满足其中一个条件时就执行相应的sql,然后跳出<choose>,当所有<when>都不满足时,则执行<otherwise>下的sql。

    <choose>元素的应用还是比较简单的,这里就不多赘述。

    自我控制是最强者的本能-萧伯纳
  • 相关阅读:
    Live2d Test Env
    关于word2vec的一些问题
    排序链表
    最长回文子串
    前缀树
    验证回文串
    最大子序和/积
    构建知识图谱-初学
    HMM-维特比算法理解与实现(python)
    跨存储后台迁移数据的三种方案
  • 原文地址:https://www.cnblogs.com/CF1314/p/14119255.html
Copyright © 2011-2022 走看看