使用Mybatis遇到的坑之Integer类型参数的解读

 更新时间:2023年03月30日 09:15:24   作者:Mr1ght  
这篇文章主要介绍了使用Mybatis遇到的坑之Integer类型参数的解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

使用Mybatis遇到的坑之Integer类型参数

有时候我们使用实体类传递参数时,有些属性会被设置为Integer类型,比如status、sort等,在这里,使用Integer类型参数作为条件时

要注意一点:例如

<if test="bean.activitySort != null and bean.activitySort !=""">
        AND activity_sort = #{bean.activitySort,jdbcType=VARCHAR}
</if>

这里对于bean.activitySort的判断正常情况下如果activitySort是String类型,先判空,再判断是否是空字符串,这样是正常的,但是如果activitySort是Integer类型参数,那么使用时就需要注意,此处不能对activitySort进行空字符串的判断,因为什么呢?

因为mybatis在解析Integer类型数据时,如果数据值为0,会将0解析为空字符串,这样你传入的参数就成为无效的了,所以正常使用Integer类型参数应该是下面这样:

<if test="bean.activitySort != null">
        AND activity_sort = #{bean.activitySort,jdbcType=VARCHAR}
</if>

Mybatis的xml,Integer类型参数bug问题

当有Integer数据类型的参数值为0时,如pid=0,xml中pid==“” 判断为ture,即不走条件语句

<if test="pid != null and pid != '' ">
   AND a.pid = #{pid}
</if>

正确写法一:还要加上一句 or pid==0

<if test="pid != null and pid != '' or pid ==0">
   AND a.pid = #{pid}
</if>

正确方法二:去掉and pid != ''的条件

<if test="pid != null ">
   AND a.pid = #{pid}
</if>

原因分析

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Springboot+redis+Interceptor+自定义annotation实现接口自动幂等

    Springboot+redis+Interceptor+自定义annotation实现接口自动幂等

    本篇文章给大家介绍了使用springboot和拦截器、redis来优雅的实现接口幂等,对于幂等在实际的开发过程中是十分重要的,因为一个接口可能会被无数的客户端调用,如何保证其不影响后台的业务处理,如何保证其只影响数据一次是非常重要的,感兴趣的朋友跟随小编一起看看吧
    2019-07-07
  • java学习之一维数组中重复元素的去除

    java学习之一维数组中重复元素的去除

    关于一维数组中有重复的元素该怎么剔除,作为java初学者的我整理出不调用任何特殊库的基础方法,这种思想在其他语言也适用,有需要的朋友可以借鉴参考下
    2021-09-09
  • 详解Java之路(五) 访问权限控制

    详解Java之路(五) 访问权限控制

    本篇文章主要介绍了Java之路(五) 访问权限控制 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-12-12
  • 基于SSM 集成 Freemarker模板引擎的方法

    基于SSM 集成 Freemarker模板引擎的方法

    这篇文章主要介绍了SSM 集成 Freemarker模板引擎,SSM 架构下一般采用 Freemarker,Spring Boot 架构下一般推荐采用 Thymeleaf 模板引擎,需要的朋友可以参考下
    2022-01-01
  • nacos配置实例权重不生效问题

    nacos配置实例权重不生效问题

    这篇文章主要介绍了nacos配置实例权重不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java实现学生宿舍系统

    java实现学生宿舍系统

    这篇文章主要为大家详细介绍了java实现学生宿舍系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • java应用开发之JVM运行时内存分析

    java应用开发之JVM运行时内存分析

    这篇文章主要介绍了java应用开发之JVM运行时内存,文中附含图文示例内容分析非常简要,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • SpringBoot中使用@Async注解失效场景及说明

    SpringBoot中使用@Async注解失效场景及说明

    在Spring Boot中,@Async注解就像一把刀,能帮你轻松处理那些耗时的任务,让主线程可以继续忙别的事儿,不过,跟所有强大的工具一样,用不好它也可能出岔子,为了避免这些坑,咱们得深入了解下@Async注解,接下来,咱们就来聊聊7种常见的@Async失效情况,需要的朋友可以参考下
    2024-07-07
  • Spring依赖注入多种类型数据的示例代码

    Spring依赖注入多种类型数据的示例代码

    这篇文章主要介绍了Spring依赖注入多种类型数据,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java实现可配置换肤的方法示例

    Java实现可配置换肤的方法示例

    本文主要介绍了Java实现可配置换肤的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论