1.if判断问题,会出现持久化错误
<if test="username != null and username != '' and username != ' '">
</if>
原因:做字符串非空判断的时候(username != ’ ')不能要
2.between问题
select 1 from sys_user
<where>
<if test="time1 != null and time2 != null">
time
between
#{time1}
and
#{time2}
</if>
<if test="time1 != null and time2 == null">
time
>=
#{time1}
</if>
<if test="time1 == null and time2 != null">
time
<=
#{time2}
</if>
</where>
原因:这种if判断在mybatis只能使用一次,第二次值为空。所以正确的写法是下面的写法,想要判断其余条件,可以在serviceImpl层实现
select 1 from sys_user
<where>
<if test="time1 != null and time2 != null">
time
between
#{time1}
and
#{time2}
</if>
</where>
3.想实现java里的if elseif else,可以这样写,比如order by升序降序和默认的判断
<if test="order != null">
//这里要防止sql注入,所以最好在impl层限制一下
order by username ${order}
</if>
—未完待续—