Mybatis单个参数的if判断报异常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解决方案
作者:执笔记忆的空白 发布时间:2023-10-16 14:56:01
标签:mybatis,if,参数,异常
我们都知道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那样直接用参数对象名判断了。还有就是数据类型最好加上
来源:https://blog.csdn.net/moneyshi/article/details/45914467


猜你喜欢
- 本文实例讲述了Android编程使用AlarmManager设置闹钟的方法。分享给大家供大家参考,具体如下:package com.Aina
- Reflection也就是反射,是Java语言的一个重要特征,我们知道,在使用一个类之前,我们往往都已经创建好它了,比如创建一个类文件,然后
- Spring Cloud 本地属性覆盖注:使用版本版本 spring cloud F SR2当前在项目中使用了Spring cloud 配置
- 本文实例讲述了C#实现将字符串转换成日期格式的方法。分享给大家供大家参考。具体实现方法如下:string s = "2012011
- 一、DataSource首先大家要清楚DataSource属于MyBatis三层架构设计的基础层 然后我们来看看具体的实现。在数据持久层中
- 概述从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章.贪心算法贪心算法 (Greedy Algorithm)
- 这篇文章主要介绍了JavaWeb项目Servlet无法访问问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- Java自定义动态数组1、静态数组向动态数组转变(1)静态数组,数组空间固定长度这个数组空间总长为4,如果此时新插入一个数据就会报数组空间不
- 在正式的进入主题之前,我们先来了解下深拷贝和前拷贝的概念:浅拷贝:会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝,如果属性是基本
- BeanUtilsBeanUtils是Apache commens组件里面的成员,由Apache提供的一套开源api,用于简化对javaBe
- 这篇文章主要介绍一下如何实现View的3D旋转效果,实现的主要原理就是围绕Y轴旋转,同时在Z轴方面上有一个深入的缩放。演示的demo主要有以
- 将Fragment与Layout结合使用,一般都是主Activity以frame填充Activity的方式交互管理Fragment :1.由
- Parallel类是对线程的抽象,提供数据与任务的并行性。类定义了静态方法For和ForEach,使用多个任务来完成多个作业。Paralle
- 最新需要在项目启动后立即执行某个方法,然后特此记录下找到的四种方式注解@PostConstruct使用注解@PostConstruct是最常
- 最近零碎时间一直在研究OpenGL,所以没怎么进行分享,以后可能大部分时间会学习系统底层\NDK\VR\AR等领域,话不多少,今天来分享个小
- 关于[Cannot determine value type from string ‘xxx’]的
- 一、前言正常情况下classloader只能找到jar里面当前目录或者文件类里面的*.class文件。为了能够加载嵌套jar里面的资源之前都
- NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子
- 1、继承Thread类方式这种方式适用于执行特定任务,并且需要获取处理后的数据的场景。举例:一个用于累加数组内数据的和的线程。public
- 一、同步容器 1、Vector——>ArrayList vector 是线程(Thread)同步(Synchron