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

Posted 菜鸡开发阿飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于mybtis 使用过程中发生There is no getter for property named 'id' in class 'java.lang.String相关的知识,希望对你有一定的参考价值。

  今天在修改一个关于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的主要内容,如果未能解决你的问题,请参考以下文章

关于使用kms时遇到的there is nothing to do here

Java中子类继承父类关于构造方法的问题:there is no default constructor available in

Other关于There is a cycle in the hierarchy!

Hbase 之 There is insufficient memory

There is no PasswordEncoder mapped for the id "null"

关于 There is no getter for property named 'id' in 'class java.lang.Integer'