Mybatis中进行查询或者插入等操作的时候,我们一般会对数据进行非空校验。例:
<if test="payerId != null and payerId != '' "> AND payer_id = #{payerId} </if> <if test="payeeId != null and payeeId != '' "> AND payee_id = #{payeeId} </if>
如果不为空并且不是null才去修改这个值,但这样写只能针对字符串(String)类型,如果是Integer类型的话就会有问题了。例:
int parentId = 0; <if test="parentId != null and parentId != '' "> AND parent_id = #{parentId} </if> 如上伪代码, AND parent_id = #{parentId} 将不会执行,也就是说mybatis将 parentId的值默认为 空字符串。
所以,针对这个问题,我的解决办法是:如果类型为Integer类型,我就去掉 != ”的判断,只判断!=null即可。