【There is no getter for property named “ XXX “ in class “ XXX “】

  • Post author:
  • Post category:其他




There is no getter for property named ” XXX ” in class ” XXX ”

在上代码字符没有输入错误的情况下

背景:想要直接往mapper接口中传入一个实体对象,然后sql语句通过该实体对象获取参数,存入到DB中。

问题:报错 There is no getter for property named ” XXX ” in class ” XXX ”

错误的原因:mapper接口中没有使用@Param注解,导致mybatis不知道参数的名字。

注意:有的时候直接传入字段的话不需要使用@Param注解也是可以使用的,原因是mybatis会根据接口中参数的顺序自动在sql中进行映射,所以不会报错,但是当传入的字段为实体的时候mybatis找不到映射关系,所以会报错上述的错误。

错误示例如下所示

public interface StudentMapper {
void insertXXX(Student student); 
void upateXXX(Student student); 
}

正确的写法

public interface StudentMapper {
void insertXXX(@Param("student")Student student); 
void updateXXX(@Param("student")Student student); 
}

运行后,错误消失。

@Param注解还可以给传入的对象重命名,可以自行搜索了解更多。



版权声明:本文为qq_45687669原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。