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>

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17659.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论