案例一: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>

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!