异常信息
Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'categoryMap'. Cause: java.lang.ClassNotFoundException: Cannot find class: categoryMap
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:103)
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:72)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)
... 65 more
Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'categoryMap'. Cause: java.lang.ClassNotFoundException: Cannot find class: categoryMap
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:117)
at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:130)
at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:101)
... 69 more
Caused by: java.lang.ClassNotFoundException: Cannot find class: categoryMap
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:190)
at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89)
at org.apache.ibatis.io.Resources.classForName(Resources.java:256)
at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:113)
... 71 more
场景描述
resultMap
<resultMap id="categoryMap" type="category">
<id property="id" column="a_id"/>
<result property="name" column="a_name"/>
<result property="parent_id" column="a_pid"/>
<result property="species_num" column="a_count"/>
<collection property="types" javaType="category">
<id property="id" column="b_id"/>
<result property="name" column="b_name"/>
<result property="parent_id" column="b_pid"/>
<result property="species_num" column="b_count"/>
</collection>
</resultMap>
<select id="findOneCategory" resultType="categoryMap">
select a.id as a_id,a.name as a_name,a.parent_id as a_pid,a.species_num as a_count,b.id as b_id,b.name as b_name,b.parent_id as b_pid,b.species_num as b_count from category a inner join category b on a.id =b.parent_id
</select>
异常原因
自定义的resultMap问题,应该把下面的resultType改为resultMap
解决方案
resultMap id="categoryMap" type="category">
<id property="id" column="a_id"/>
<result property="name" column="a_name"/>
<result property="parent_id" column="a_pid"/>
<result property="species_num" column="a_count"/>
<collection property="types" javaType="category">
<id property="id" column="b_id"/>
<result property="name" column="b_name"/>
<result property="parent_id" column="b_pid"/>
<result property="species_num" column="b_count"/>
</collection>
</resultMap>
<select id="findOneCategory" resultMap="categoryMap">
select a.id as a_id,a.name as a_name,a.parent_id as a_pid,a.species_num as a_count,b.id as b_id,b.name as b_name,b.parent_id as b_pid,b.species_num as b_count from category a inner join category b on a.id =b.parent_id
</select>
参考资料
这里是引用