MyBatis integer 0 判断为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis integer 0 判断为空相关的知识,希望对你有一定的参考价值。

参考技术A 问题重现:

operateResult=0, 不进入条件, 导致sql更新时operateResult字段明明传值却未更新

operateResult=1, 却进入条件

正常情况下理解为, operateResult 不为null 且 不为空字符串 才会进入.

但这种情况是针对字符串(String)类型,如果是 Integer 类型的话就 会有问题 了

解决方法:

将and item. operateResult!=''"去掉, 只 判 断 item. operateResult!=null

mybatis判断Long,Integer类型的条件是否为空

在使用spring和mybatis时,如果对象的某个属性是整数类型,最好定义其为Long,Integer包装类型,不要使用long,int。因为long,int不传值时,默认为0,这样作为过滤条件会导致查询结果有误。

一般我们在mybatis中判断条件是否为空时写法如下:

<if test="pinyinCode != null and pinyinCode != ''">
    AND bs.PINYIN_CODE = #pinyinCode, jdbcType=VARCHAR 
</if>

如果是Long,Integer类型时,如果设置其为0,那么在mybatis中 !=‘’是不成立的,因此对于Long,Integer类型做如下判断:

 <if test="anesthetist != null">
      AND bs.ANESTHETIST = #anesthetist, jdbcType=INTEGER 
 </if>

以上是关于MyBatis integer 0 判断为空的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis判断Integer失效

java怎么判断int是不是为空?

mybatis 参数判断条件

mybatis使用if判断参数是否为空

记一次SpringBoot 开发中所遇到的坑和解决方法

如何向int类型插入空值