1.问题出现背景
在mybatis项目开发中经常会遇到这种情况的判断:
<if test="status != null and status !='' ">
and status = #{status,jdbcType = INTEGER}
</if>
status通常设置为int型,根据不同的status设置不同的条件用于查询拼接sql语句。
但我们发现,当status==0时,该if条件是进不去的,但是不为空啊,为什么不满足if条件拼接sql语句呢??
2.问题出现原因
当status值为0时,Mybatis将作为if条件中的false结果,即不执行此if里面的内容,所以当status=0时,if条件中的设置的过滤或者修改字段及字段取值没有设置成功,导致查询和编辑status=0时不成功。
3.解决办法
将status的if条件设置为:
<if test="status != null ">
and status = #{status,jdbcType = INTEGER}
</if>
因为当status==0市 直接判定为false,if条件直接不满足。