今天在修改一个关于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' 错误
原文地址:https://www.cnblogs.com/zyfBlogShare/p/11765519.html
时间: 2024-11-01 20:19:03