Mybatis跳坑:Mapper注入单个基本类型参数失败There is no getter for property named
2018-02-10 19:10
1376 查看
问题描述
后台执行sql操作时报错:<pre>javax.servlet.ServletException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'colunmnId' in 'class java.lang.Integer' org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:391) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:382) org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:345) ....
问题分析
产生现象:select查询语句使用 parameter = string (基本数据类型)参数,嵌套在if动态sql标签上,导致此处无法注入参数。该报错导致后台在sql语句执行时无法注入前端传来的参数。
解决办法
将if动态sql语句标签中的参数名替换成”_parameter” 即可分析错误原因(刨根问底)
我们去分析源码,在动态sql语句注入的部分,mybatis执行DynamicSqlSource类中的getBoundSql方法,其中对前端传过来的参数进行包装。见下面的new DynamicContext(configuration, parameterObject);紧接着我们进入此构造函数去看里面的实现:会发现mybatis将参数以”_parameter”命名装载在一个ContextMapz对象当中,所以我们使用”_parameter”去调用参数是OK的。
啰嗦
源码分析到这里显然是不够的,但是再往下深入理解就要涉及到mybatis的运行原理了,这并不在跳出此坑的范围之内,大家感兴趣可以自己去阅读源码。相关文章推荐
- mybatis的if标签对于单个基本数据类型的参数的判断问题
- MyBatis 传入单个基本类型参数所需要注意的问题
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- spring mybatis 整合后mapper接口注入失败问题
- springMVC mybatis整合dao接口(mapper接口) spring注入失败
- MyBatis: SQL语句中传入单个String类型的参数的获取
- Spring 整合 MyBatis,Mapper注入失败
- 关于mybatis的参数2个使用经验(类似于struts2的通配所有页面的action配置,xmlsq语句参数类型为基本类型时的快捷指定办法)
- springMVC mybatis整合dao接口(mapper接口) spring注入失败
- mybatis查询参数中既有 实体类参数又有基本类型参数 解决方案
- Mybatis传递单个参数(string)时,获取参数失败
- 关于mybatis 传入基本参数类型使用if test 判断出错的问题
- Mybatis的mapper接口接受的参数类型
- MyBatis sqlMapper.xml 传入String类型参数报错,invalid comparison: java.util.LinkedHashMap and java.lang.Strin
- 当mapper中的parametType为基本类型(如int,string等)时,报错的问题(mybatis使用了<if>判断)
- mybatis中传入基本类型参数,传入多个基本数据类型
- Java深入(高新技术)(二):开发环境、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、享元模式
- Mybatis 注入全局参数