Mybatis学习之选择标签用法

本文详细介绍了Mybatis中choosewhen和if标签的使用方法,通过实际案例展示了如何利用这些标签进行SQL拼接,类似于Java的switch和if结构,适合在分支判断时提升代码效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis学习之选择标签用法

前言

  • 简介

    日常开发中,为了代替使用代码进行分支判断,常用Mybatis动态标签进行拼接条件,下面主要介绍choose when 和 if 标签的使用。

案例

概念

  • choose when分支判断

    MyBatis 提供了 choose 元素,按顺序判断 when 中的条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的 sql。类似于 Java 的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。

  • if 单个判断

    if 是与(and)的关系,而 choose 是或(or)的关系。

  • where 拼接条件

    这个“where”标签会知道如果它包含的标签中有返回值的话,它就插入一个‘where’。此外,如果标签返回的内容是以 AND 或 OR 开头的,则它会剔除掉。

使用案例

  • xml样例
    
        <select id="selectStudentList" parameterType="com.nbsp.Student" resultMap="com.nbsp.StudentEntity">
            SELECT * from STUDENT
            <where>
                <choose>
                    <when test="Name!=null and student!='' ">
                        AND name LIKE CONCAT(CONCAT('%', #{student}),'%')
                    </when>
                    <when test="hobby!= null and hobby!= '' ">
                        AND hobby = #{hobby}
                    </when>
                    <otherwise>
                        <if test="AGE!= null and AGE!= '' ">
                            AND AGE = #{age}
                        </if>
                    </otherwise>
                </choose>
            </where>
        </select>
    
    
    

参考链接

  • mybatis的常用动态sql标签

    https://blog.csdn.net/qq_39623058/article/details/88779242

  • mybatis if标签判断字符串相等

    https://www.cnblogs.com/westward/p/6910856.html

  • Mybatis中的各种标签用法

    https://blog.csdn.net/weixin_42968598/article/details/97259464

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Charles Yan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值