码迷,mamicode.com
首页 > 其他好文 > 详细

ssm 关于mybatis启动报Result Maps collection already contains value for ...的问题总结

时间:2020-06-13 21:43:13      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:code   一点   resultmap   属性   启动   com   oftype   exception   自定义类   

Result Maps collection already contains value for com.zhaike.mapping.ChapterMapper.BaseResultMap

 Error creating bean with name ‘courseController‘: Unsatisfied dependency expressed through field ‘courseService‘; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException

关于这个问题,网上解答很嘈杂,不同的人遇到的实际问题也不尽相同。今天启动项目时报了这个错,查了很长时间,下面就这个问题列举了一些可能出错的地方。

1、当同一个xml映射文件内存在两个相同的id(即两个sql语句的id相同)时会报此错

解决:查询sql语句的id值修改

2、在mybatis的配置文件mybatis.xml内使用了<mapper/>标签加载xxxMapper.xml的映射文件报错,因为如果xxxMapper.xml与namespace的接口在同一路径下,就不需要在mybaits.xml中再进行配置了。

解决:将mybatis文件中<mapper/>标签中的内容删除

3、parameterType中的问题。这里的类名如果找不到也会报这个错,比如你之前是将该类名写死在这里,之后由于重构将该类转移到其他包中,如果这里不修改也会报这个错

解决:检查。。

4、还是parameterType中的问题,这次是关于自定义类的,当你使用基本类型的时候,比如int、string等,千万不要写错,比如写成strnig,咋一看看不出来,结果该问题就很难找

解决:检查。。

5、resultType的值与resultMap的id值相同的话会报错,可能是冲突了

解决:修改resultMap的id属性,因为resultType的值即为bean类别名或者全路径名

6、这一点和上一点差不多,如果是自定义resultMap,如果返回类型写成resultType,也会报这个错(今天就载在这。)

解决:将返回类型改为resultMap,且不要出现第5点的问题

 

 1 <resultMap type="com.zhaike.entity.Course" id="allCourses"  extends="BaseResultMap">
 2       <collection property="chapters" ofType="com.zhaike.entity.Chapter" select="selectchapters"
 3                   column="{courseId=id}">
 4         <!--column把第一次查询的结果 到第二次查询中去  courseId和#{courseId}对应 -->
 5       </collection>
 6     </resultMap>
 7   <!--自定义查询sql-->
 8   <select id="selectAllCourse" resultType="allCourses">/* 自定义类型写出resultMap 而不可以是resultType*/
 9     select * from course c;
10   </select>
11   <select id="selectchapters" resultMap="com.zhaike.mapping.ChapterMapper.BaseResultMap">
12     select * from chapter where courseId = #{courseId}
13   </select>

 

<resultMap type="com.zhaike.entity.Course" id="allCourses"  extends="BaseResultMap">
<collection property="chapters" ofType="com.zhaike.entity.Chapter" select="selectchapters"
column="{courseId=id}">
<!--column把第一次查询的结果 到第二次查询中去 courseId#{courseId}对应 -->
</collection>
</resultMap>
<!--自定义查询sql-->
<select id="selectAllCourse" resultType="allCourses">/* 自定义类型写出resultMap 而不可以是resultType*/
select * from course c;
</select>
<select id="selectchapters" resultMap="com.zhaike.mapping.ChapterMapper.BaseResultMap">
select * from chapter where courseId = #{courseId}
</select>

ssm 关于mybatis启动报Result Maps collection already contains value for ...的问题总结

标签:code   一点   resultmap   属性   启动   com   oftype   exception   自定义类   

原文地址:https://www.cnblogs.com/caoxinfang/p/13121565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!