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>元素的应用还是比较简单的,这里就不多赘述。

posted @ 2020-12-11 10:59  MyDistance  阅读(2461)  评论(0编辑  收藏  举报