前言:mybatis编写mapper中的注解时:
使用的是@select注解来进行查询。
出现以下报错:
报错语句:
- Cause: org.apache.ibatis.executor.ExecutorException: No constructor found in com.kai.petstore.domain.Account matching [java.lang.String, java.lang.String, java.lang.String, java.lang.String]
- ibatis处理器异常的一种
过程:
开始一直以为是自己的注解中的对结果没有处理好(@results),经过一段时间的尝试,问题应该不是出现在这里。于是又将报错语句仔细看了遍。
constructor 是构造器的意思,这里说在我的实体类中没有找到对应的构造方法,于是我去实体类看了下,只有一个带参数的构造方法。所以默认的隐式构造器就不起作用了。
我在实体类中生成了无参的构造方法。运行项目,发现没有再报错了。
原因:
在mybatis中,实体类必须有默认无参构造,因为将字段和属性映射的时候需要调用到实体的无参构造。
总结:
项目使用mybatis构建时,创建实体类一定要带上无参构造。
如果你没有写带参数的构造方法,那么默认的隐式无参构造就会起作用。
如果写了带参的构造方法,记得一定要显示声明无参构造器。