控制台报错:
Mybatis出现了一个报错,说是没有找到构造器
No constructor found in com.aqueduct.base.entity.system.Menu matching
[java.lang.Integer, java.lang.String, java.lang.String,
java.lang.String, java.lang.String, java.lang.String,
java.lang.String, java.lang.Integer, java.lang.String]
…
mybatis Mapper配置: 配置及使用正常
<resultMap type="Menu" id="menuResultMap"> <!-- 用id属性来映射主键字段 --> <id column="MENU_ID" property="MENU_ID"/> <!-- 用result属性来映射非主键字段 --> <result column="MENU_NAME" property="MENU_NAME"/> <result column="PARENT_ID" property="PARENT_ID"/> <result column="MENU_URL" property="MENU_URL"/> </resultMap>
注意:在实体内重写了构造函数:
public Menu(String mENU_ID, String mENU_NAME, String pARENT_ID, String mENU_ICON, String mENU_LINK) { super(); MENU_ID = mENU_ID; MENU_NAME = mENU_NAME; PARENT_ID = pARENT_ID; MENU_ICON = mENU_ICON; MENU_LINK = mENU_LINK; }
重写了有参构造器后,实体返回数据依据构造方法进行数据返回,忽略了多字段和实体属性类型,所以在返回数据时,出现了以上错误
解决方案:
public Menu() { super(); }
重写了构造器后,忘了补写一个默认的构造器,向实体内加入无参构造方法,问题即可解决.此类的错误还经常出现在spring等这种大量使用反射的框架中。因为这些框架在调用反射的类后会默认调用默认的构造器