Mybatis数据类型做判断总结,很容易出错又难找
Integer类型,这个类型在写判断的时候,在开发中我们常会这么写
Integer a
<If test =“ a != null and a !=’ ’ “ >
执行语句
</if>
有时会发现带不上这个条件。抛开来看Mybatis中的语法,一个Integer类型的字段等于一个空字符串。在一种可能下成立的,那就是当a =0时,Mybatis才会为’ ’。
那么当a=0时,a!=null条件成立,a!= ‘’ 这个条件不成立。所以执行语句不拼接。所以保险的写法
<If test =“ a != null “ >
执行语句
</if>
Long类型的字段,可能认为Long字段的跟Integer一样的。
Long a
<If test =“ a != null “ >
执行语句
</if>
也是这么写,在插入某个对象时a字段的值没有set。也就是为空,数据库打印时发现这个if条件执行了,也就是说这个if条件成立的。分析下来:a的值未传递,也是就是空值。空值到mybatis的if条件时a!=null.那就说明a字段的值确实不是null,那明明没传,a的值为多少。Long字段类型,如果不传值为空。Mybatis默认字段值为0。除非是你在set值时指定了setA(null).这样才算传的null。所以条件判断这样写才没问题。
<If test =“ a != null and a != ‘ ’ “ >
执行语句
</if>