Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案

 更新时间:2018年12月11日 10:57:57   作者:执笔记忆的空白  
今天小编就为大家分享一篇关于Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

我们都知道mybatis在进行参数判断的时候,直接可以用<if test=""></if> 就可以了,如下:

1、常规代码

<update id="update" parameterType="com.cq2022.zago.order.entity.Test" >
  update t_test_l
  <set >
   <if test="trnsctWayId != null" >
    trnsct_way_id = #{trnsctWayId,jdbcType=TINYINT},
   </if>
   <if test="langId != null" >
    lang_id = #{langId,jdbcType=INTEGER},
   </if>
  </set>
  where trnsct_way_l_id = #{trnsctWayLId,jdbcType=INTEGER}
 </update>

但是单个参数和多参数的判断有个不同点,当我们的入参为entity实体,或者map的时候,使用if 参数判断没任何问题。

但是当我们的入参为java.lang.Integer  或者 java.lang.String的时候,这时候就需要注意一些事情了

具体代码如下(咱们看着代码说,先展示错误代码):

2、错误代码

<select id="getTrnsctListByLangId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
  select 
  trnsct_id
  from t_trnsct_way_l where 
  <if test="langId != null" >
    and lang_id = #{langId}
  </if>
 </select>

上述代码存在一些问题,首先入参是java.lang.Integer, 而不是map或者实体的入参方式,对于这类单个入参然后用if判断的,mybatis有自己的内置对象,如果你在if判断里面 写的是你的入参的对象名,那就报异常:Internal error : nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'langId' in 'class java.lang.Integer'

3、正确代码:

这里就涉及到mybatis的内置对象_parameter,单个参数判断的时候,就不像1、 2那样直接用参数对象名判断了。还有就是数据类型最好加上

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • 基于springEL表达式详解及应用

    基于springEL表达式详解及应用

    这篇文章主要介绍了springEL表达式详解及应用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • IntelliJ IDEA下Maven创建Scala项目的方法步骤

    IntelliJ IDEA下Maven创建Scala项目的方法步骤

    这篇文章主要介绍了IntelliJ IDEA下Maven创建Scala项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 一篇文章带你搞定JAVA泛型

    一篇文章带你搞定JAVA泛型

    泛型是Java中的高级概念,也是构建框架必备技能,比如各种集合类都是泛型实现的,今天详细聊聊Java中的泛型概念,希望有所收获
    2021-07-07
  • 分析那些不讲武德的SDK(构造使用规范)

    分析那些不讲武德的SDK(构造使用规范)

    这篇文章主要为大家介绍了盘点分析那些不讲武德的SDK(构造规范)详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 使用Spring CROS解决项目中的跨域问题详解

    使用Spring CROS解决项目中的跨域问题详解

    这篇文章主要介绍了使用Spring CROS解决项目中的跨域问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • java基于odbc连接oracle的实现方法

    java基于odbc连接oracle的实现方法

    这篇文章主要介绍了java基于odbc连接oracle的实现方法,结合实例形式分析了连接操作的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-09-09
  • 详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解

    这篇文章主要为大家详细介绍了Java注解教程及自定义注解,帮助大家更好地学习Java注解,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • MyBatis中resultMap和resultType的区别详解

    MyBatis中resultMap和resultType的区别详解

    这篇文章主要介绍了MyBatis中resultMap和resultType的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • java基础之初始化ArrayList时直接赋值的4种方式总结

    java基础之初始化ArrayList时直接赋值的4种方式总结

    ArrayList是Java中的一个类,它是Java集合框架中的一部分,用于实现动态数组,下面这篇文章主要给大家介绍了关于java基础之初始化ArrayList时直接赋值的4种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Java8 Instant 时间戳实例讲解

    Java8 Instant 时间戳实例讲解

    Instant类是Java8 中补充的一个 时间戳类,nstant 可以使用静态方法 now()或者of()方法来创建一个实例对象,本文通过实例代码讲解Java8 Instant 时间戳,感兴趣的朋友跟随小编一起看看吧
    2022-11-11

最新评论