choose (when, otherwise)

本文介绍了MyBatis中的choose元素及其与if标签的区别,通过实例展示了如何使用choose来实现多条件选择,并强调了where关键字的重要性以避免SQL注入风险。

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

choose (when, otherwise)

 

    有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为true,就会执行if标签中的条件。MyBatis提供了choose 元素。if标签是与(and)的关系,而choose比傲天是或(or)的关系。

    choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则choose结束。当choose中所有when的条件都不满则时,则执行otherwise中的sql。类似于Java 的switch 语句,choose为switch,when为case,otherwise则为default。

    例如下面例子,同样把所有可以限制的条件都写上,方面使用。choose会从上到下选择一个when标签的test为true的sql执行。安全考虑,我们使用where将choose包起来,放置关键字多于错误。

        <choose>
            <when test="param.agentId">
                AND o.agentId = #{param.agentId}
            </when>
            <when test="param.groupId">
                AND o.groupId = #{param.groupId}
            </when>
            <when test="param.mendianId">
                AND o.mendianId = #{param.mendianId}
            </when>
            <when test="param.areaId">
                AND o.areaId = #{param.areaId}
            </when>
            <when test="param.bigAreaId">
                AND o.bigAreaId = #{param.bigAreaId}
            </when>
            <when test="param.cityId">
                AND o.cityId = #{param.cityId}
            </when>
            <otherwise>
            </otherwise>
        </choose>

 只取多个条件中的一个,相当于switch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值