今天遇到一个坑,就是在做条件查询的时候,根据任务的状态查询的时候,如果任务的状态是0,我们在写mybatis查询语句的时候一般这样写
<if test="taskListQuery.taskStatus != null and taskListQuery.taskStatus != '' ">
乍一看没有问题,但是在查询的时候,查询的状态是0
查询的结果却还是有状态为1的数据,所以上面的mybatis的判断应该不正确,首先肯定不等于null,那有问题的只能是taskStatus=’’。查看资料发现,mybatis会将Integer字段的值为0的数据强制定义为空字符串,所以造成了这个问题,解决这个问题就是把判断空字符串的语句去掉就好了
<if test="taskListQuery.taskStatus != null">
因为如果定义了类型为Integer,默认的值就是null,判断空字符串就是多此一举!