mybatis对传入参数进行判断时,会使用if标签, 一般是判断不为null和’', 如下:
<if test="num!= null and num!= ''">
num=#{num,jdbcType=VARCHAR},
</if>
1、 String类型是符合的,但是如果是Integer类型的话,如果变量的值是0,即 num = 0, mybatis在进行 num != ''的时候会认为 num 的值是空字符串, 即 num == ‘’ 为true。
所以如果是Integer类型只需要判断num != null 或者加上num!= null and num!= ‘’ or num==0
2、如果String类型需要判断不等于0,则需要写name != ‘0’.toString(),否则会报错。
在MyBatis中,使用if标签进行参数判断时,需要注意Integer类型的特殊情况。对于Integer,当值为0时,num!=''会误判为true。因此,Integer类型判断应为num!=null或num!=null and (num!=0 or num=='0')。而对于String类型,若要判断不等于'0',需写成name!=‘0’.toString(),以避免错误。本文探讨了这一常见问题及其解决方案。
1269

被折叠的 条评论
为什么被折叠?



