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