【Mybatis异常】nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter

简介: 【Mybatis异常】nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter

一、背景描述

项目说明:Spring boot (v2.0.0 RELEASE) + Mybatis-Plus (v3.1.1 RELEASE)

最近在项目中调试接口的时候遇到这样一个问题,mybatis解析时出错:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'deptId' in 'class java.lang.String',如下图所示:

二、错误原因

正常情况下,我们都知道mybatis在进行参数判断的时候,直接可以用 就可以了,使用entity实体或者Map的时候,下面的代码是正确的:

下面是重点哦:

但是单个参数和多参数的判断有个不同点,当我们的入参为entity实体,或者map的时候,使用 if 参数判断没任何问题。但是当我们的入参为java.lang.Integer 或者 java.lang.String的时候,这时候就需要注意一些事情了。

我们需要使用 if 参数判断 引入参数,会抛异常nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'deptId' in 'class java.lang.String'

<select id="queryList" resultType="com.soft.back.model.OutdevFactory"
      parameterType="java.lang.String">
  select
      <include refid="Base_Column_List"/>
  from op_outdev_factory
  <where>
      <if test="factoryName != null">
    and name like concat('%',#{factoryName},'%')
      </if>
  </where>
</select>

至于原因嘛就是对于这类单个入参然后用 if 判断的,mybatis有自己的内置对象,Mybatis默认采用OGNL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。

三、解决方案

方案一:把 #{xxx} 修改为 #{_parameter}

<select id="queryList" resultType="com.soft.back.model.OutdevFactory"
      parameterType="java.lang.String">
  select
      <include refid="Base_Column_List"/>
  from op_outdev_factory
  <where>
      <if test="_parameter != null">
    and name like concat('%',#{_parameter},'%')
      </if>
  </where>
</select>

方案二:在方法中提前定义

/**
 * 查询厂家列表
 * @param factoryName
 * @return
 */
List<OutdevFactory> getFactoryList(@Param("factoryName") String factoryName);
<select id="queryList" resultType="com.soft.back.model.OutdevFactory"
      parameterType="java.lang.String">
  select
      <include refid="Base_Column_List"/>
  from op_outdev_factory
  <where>
      <if test="factoryName!= null">
    and name like concat('%',#{factoryName},'%')
      </if>
  </where>
</select>

 

注意事项:其他mybatis的版本不知道有没有这个问题,暂时不知道。

 

 

 

完结!


相关文章
|
5月前
|
Prometheus Cloud Native 关系型数据库
实时计算 Flink版操作报错合集之实时计算 Flink版操作报错合集之当从保存点恢复并添加新的表时,出现了org.apache.flink.util.FlinkRuntimeException异常,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
Java 数据库连接 mybatis
Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid
Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Invalid
|
6月前
|
Java
Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException:
Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException:
|
6月前
|
IDE Java 应用服务中间件
解决org.apache.jasper.JasperException异常
解决org.apache.jasper.JasperException异常
|
6月前
|
Java 数据库连接 mybatis
【已解决】nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘qcBizname‘ not found
【已解决】nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘qcBizname‘ not found
279 0
|
7月前
|
前端开发 Java 数据库连接
若依 mybatis报错nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ 错误
若依 mybatis报错nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ 错误
156 0
|
7月前
|
Java Spring
上传文件出现 aximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.
上传文件出现 aximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.
66 0
|
2月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
148 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
78 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
547 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个

推荐镜像

更多