mybatis中的if-else使用及if嵌套使用

案例一:if-else

在使用mybatis mapper 动态sql时,不免会出现if-else的使用,但是好像又没有这种语法,提供的是choose标签代替if-else

例如:

select * from t_stu t
<where>
    <choose>
        <when test="query == 0">
            and t.status = 1 
        </when>
        <otherwise>
                and t.status  NOT IN (9,5)
        </otherwise>
    </choose>
    and t.delete_status = 1
</where>

也可以用多个if判断实现:

select * from t_stu t
<where>
    <if test="query == 0">
        and t.status = 1 
    </if>
    <if test="query != 0">
        and t.status  NOT IN (9,5)
    </if>
    and t.delete_status = 1
</where>

案例二:if嵌套

在实际编码过程中会有一些判断条件会一直重复使用,一直写在if标签中写的代码会特长,而且臃肿

select * from t_stu t
<where>
    <if test="query == 0 and type = 1">
        and t.type = 'we' and t.delete = 1
    </if>
    <if test="query == 0 and type = 2">
        and t.type = 'wq' and t.delete = 1
    </if>
    <if test="query == 0 and type = 3">
        and t.type = 'wr' and t.delete = 1
    </if>
</where>

变现后:

select * from t_stu t
<where>
    <if test="query == 0">
        <if test="type == 1">
            and t.type = 'we'
        </if>
         <if test="type == 2">
            and t.type = 'wq'
        </if>
        <if test="type == 3">
            and t.type = 'wr'
        </if>
    </if>
    and t.delete = 1
</where>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值