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

案例一:if-else

在使用mybatismapper动态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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis的if-else标签可以用于动态生成SQL语句,根据不同条件生成不同的SQL语句,从而实现灵活的数据查询。以下是if-else标签的使用方法: 1. 在SQL语句使用if-else标签,语法如下: ``` <select id="selectUser" resultType="User"> SELECT * FROM user <where> <if test="id != null"> AND id = #{id} </if> <if test="username != null"> AND username = #{username} </if> </where> </select> ``` 2. 在if标签使用test属性指定条件表达式,如果条件表达式为true,则生成if标签SQL语句;否则不生成if标签SQL语句。 3. 可以使用多个if标签组合使用,实现多条件查询。 4. 可以使用else标签,实现条件分支,如下所示: ``` <select id="selectUser" resultType="User"> SELECT * FROM user <where> <if test="id != null"> AND id = #{id} </if> <if test="username != null"> AND username = #{username} </if> <if test="age != null and age > 0"> AND age = #{age} </if> <otherwise> AND status = 1 </otherwise> </where> </select> ``` 5. 可以使用choose-when-otherwise标签组合使用,实现多条件分支,如下所示: ``` <select id="selectUser" resultType="User"> SELECT * FROM user <where> <choose> <when test="id != null"> AND id = #{id} </when> <when test="username != null"> AND username = #{username} </when> <when test="age != null and age > 0"> AND age = #{age} </when> <otherwise> AND status = 1 </otherwise> </choose> </where> </select> ``` 6. 可以在if-else标签嵌套使用if-else标签,实现更加灵活的动态SQL生成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值