码迷,mamicode.com
首页 > 编程语言 > 详细

关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String' 错误

时间:2019-10-30 16:28:39      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:alt   为什么   parameter   报错   @param   getter   解决方案   原因   class   

  今天在修改一个关于mybtis语句时,偶然发现的一个错误  There is no getter for property named ‘id‘ in class ‘java.lang.String‘, 纠结了许久,终于明白了为什么。

        原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。当然也不是所有的版本会有这个问题,我的项目用的版本比较老。

有两种解决方案:

方案一: 将对应的参数用 _parameter 的一个参数替代,在执行SQL语句的时候就相当预编译,此时并不是实际赋值,相当于占位符,这样就不会发生这样的错误,直接上图:

技术图片

 

 将mapper中的方法参数用 _parameter来依次替代,也就是上图中画红色线部分。

方法二 

在mapper.dao 文件中接口类文件中的方法参数预先定义,给参数加上@Param("id") 类似的注解也能解决这个问题,但需要导入相应的注解包和开启扫描注解

public Object getObjById(@Param("id")String id);

 

关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String' 错误

标签:alt   为什么   parameter   报错   @param   getter   解决方案   原因   class   

原文地址:https://www.cnblogs.com/zyfBlogShare/p/11765519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!