Mybatis中if标签 int类型值为0判空问题

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条件直接不满足。


版权声明:本文为m0_37899908原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。