今天在修改一个关于mybtis语句时,偶然发现的一个错误 There is no getter for property named 'id' in class 'java.lang.String', 纠结了许久,终于明白了为何。
java
缘由:Mybatis默认采用ONGL解析参数,因此会自动采用对象树的形式取 string.xxx 值,若是没在在方法中定义,则会抛异常报错。固然也不是全部的版本会有这个问题,个人项目用的版本比较老。app
有两种解决方案:spa
方案一: 将对应的参数用 _parameter 的一个参数替代,在执行SQL语句的时候就至关预编译,此时并非实际赋值,至关于占位符,这样就不会发生这样的错误,直接上图:对象
将mapper中的方法参数用 _parameter来依次替代,也就是上图中画红色线部分。blog
方法二 接口
在mapper.dao 文件中接口类文件中的方法参数预先定义,给参数加上@Param("id") 相似的注解也能解决这个问题,但须要导入相应的注解包和开启扫描注解get
public Object getObjById(@Param("id")String id);string