mybatis中if判断数据类型(Integer,Long)

1,188 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

查询语句 Integer类型,这个类型在写判断的时候,在开发中我们常会这么写 Integer a

有时会发现带不上这个条件。抛开来看Mybatis中的语法,一个Integer类型的字段等于一个空字符串。在一种可能下成立的,那就是当a =0时,Mybatis才会为’ ’。

那么当a=0时,a!=null条件成立,a!= ‘’ 这个条件不成立。所以执行语句不拼接。所以保险的写法

<If test =“ a != null “ >
执行语句\

Long类型的字段,可能认为Long字段的跟Integer一样的。
Long a

<If test =“ a != null “ >
执行语句\

也是这么写,在插入某个对象时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 != ‘ ’ “ >
执行语句
\