MyBatis 写查询时,正常是先判断是否为空,我们一般是这样写。

 <if test="type != null and type != ''"> 
   and type = #{type}
 </if> 

如果不空 null 并且不是空字符串才去修改这个值,但这样写只能针对字符串(String)类型,如果是 Integer 类型的话就会有问题了。因为 Integer 对象,为零则为空,对象判断用 equals,传入参数放在括号里,"".equals(参数),不然值为空就会报空指针!你如果作为查询条件,一般查询中用 int,可以避免 null

Integer  i = 0;
i!=''。

MyBatis 中会返回 true。也就是说,MyBatis 将 i==0 的值也认定为空字符串。
正常来说,0 不为空也不是空字符串。所以,针对这个问题,我的解决办法是:如果类型为 Integer 类型,我就去掉 != ”的判断,只判断!=null 即可。

该问题的根源还是来自编码的不规范,只有 String 类型才需要判断是否!='',其他类型完全没有这个必要。


标题:疑难杂症之【Mybatis Integer类型,值为0被认为是空字符串】
作者:TravelEngineers
地址:https://www.mycitymemory.com/articles/2020/01/15/1579054003831.html
版权声明:转载请注明博文地址,尊重作者劳动成果。
作者简介:坐标魔都,一枚爱旅行爱摄影的攻城狮。愿攻城拔寨的路上,你不用996,也不再孤单,加油。

添加新评论