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 版权协议,转载请附上原文出处链接和本声明。