关于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', 纠结了许久,终于明白了为何。
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

相关文章
相关标签/搜索