idea +mybatis+spring+springmvc
错误日志1
Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@880ec60] to prepare test instance [com.soecode.lyf.dao.UserDaoTest@62656be4]
java.lang.IllegalStateException: Failed to load ApplicationContext
这个错误是resultMap 定义的column 多于 实体类的属性,仔细检查
错误日志2
Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.soecode.lyf.entity.Menu1 with invalid types (Short,String,String,Short,String) or values (7,menu1.3,edit,1,/menu/queryData). Cause: java.lang.NoSuchMethodException: com.soecode.lyf.entity.Menu1.<init>(java.lang.Short, java.lang.String, java.lang.String, java.lang.Short, java.lang.String)
Caused by: java.lang.NoSuchMethodException: com.soecode.lyf.entity.Menu1.<init>(java.lang.Short, java.lang.String, java.lang.String, java.lang.Short, java.lang.String)
这个是数据库查询的结果少于 定义 resultMap 的column
我的问题示例
实体类1
public class Menu { private Short id; private String title; private String iconCls; private Short parentId; private String url;
实体类2
public class Menu1 {
private Short id;
private String title;
private String iconCls;
private Short parentId;
private String url;
private List<Menu1> children;
解决
Dao对应的mapper文件 MenuDaoMapper.xml
<resultMap id="BaseResultMap" type="com.soecode.lyf.entity.Menu1"> 这个改为com.soecode.lyf.entity.menu 否者会报错 错误日志2
<constructor>
<idArg column="id" jdbcType="DECIMAL" javaType="java.lang.Short"/>
<arg column="title" jdbcType="VARCHAR" javaType="java.lang.String"/>
<arg column="iconCls" jdbcType="VARCHAR" javaType="java.lang.String"/>
<arg column="parent_id" jdbcType="DECIMAL" javaType="java.lang.Short"/>
<arg column="url" jdbcType="VARCHAR" javaType="java.lang.String"/>
<arg column="children" javaType="java.util.List"/> 因为我的数据库里没有这个字段 所以去掉此行 ,我也不知道当时为什么这么写,
</constructor>
</resultMap>
<select id="queryByParentId" resultMap="BaseResultMap" parameterType="java.lang.Short">
select
<include refid="Base_Column_List"/>
from menu
where parent_id = #{id,jdbcType=DECIMAL}
ORDER BY title DESC
</select>
<select id="queryAll" resultMap="q1">
select
<include refid="Base_Column_List"/>
from menu
WHERE parent_id is NULL
</select>
<resultMap id="q1" type="com.soecode.lyf.entity.Menu1">
<id column="id" property="id" jdbcType="DECIMAL" javaType="java.lang.Short"/>
<result column="title" property="title" jdbcType="DECIMAL" javaType="java.lang.String"/>
<result column="iconCls" property="iconCls" jdbcType="VARCHAR" javaType="java.lang.String"/>
<result column="parent_id" property="parent_id" jdbcType="DECIMAL" javaType="java.lang.Short"/>
<result column="url" property="url" jdbcType="VARCHAR" javaType="java.lang.String"/>
<collection property="children" ofType="com.soecode.lyf.entity.Menu1"
select="queryByParentId" column="id"/>
</resultMap>