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 @   MyDistance  阅读(2685)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

目录导航

Mybatis choose元素的用法
choose 介绍
choose 例子