目录

项目场景:

问题描述:

原因分析:

解决方案:

步骤:

特殊情况:


项目场景:

Spring Boot+Mybatis项目

问题描述:

使用IDEA启动的时候报错了,异常信息:

Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:...\target\classes\biz-sql\oracle\mapper\PubParamWorkListOraMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xxx.mapper.xxx.PubParamWorkListMapper.BaseResultMap

Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.xxx.mapper.workflow.PubParamWorkListMapper.BaseResultMap
    at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:872)
    at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:844)
    at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:626)
    at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:214)
    at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:285)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)
    ... 58 common frames omitted

原因分析:

异常信息提示了在Mybatis的所有配置文件里,存在着同样名称空间重复id设置,其中一个配置是PubParamWorkListOraMapper.xml里的BaseResultMap。

关于这个错误,已经有很多文章分析了原因,比如:

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点的问题

7. 配置的时候generatorConfig.xml(我的逆向工程配置文件名),里面的schema没有指定,如果没有指定的话,本地存在多个相同名字的表的话,逆向工程会自己去找名字叫t_user的这张表,也就可能导致生成了错误的bean。然后就会产生上面的问题。一定不要忘了指定。 我本地有三张叫t_user的表,忘了指定schema,就生成了错误的bean。

<table schema="ssmteam"  tableName="t_user"  domainObjectName="User"> </table>

解决方案:

步骤:

1.打开异常信息里提示出现异常的文件PubParamWorkListOraMapper.xml,查看文件里是否有重复的id:BaseResultMap

2.全局查找PubParamWorkListOraMapper.xml里的名称空间,看是否在其它配置文件里也配置了同样的名称空间

3.全局查找PubParamWorkListOraMapper.xml文件,看是否有多个工程的配置文件里都配置了这个文件

4.按照解决步骤上方的原因分析逐项排查

5.在文件系统里搜索PubParamWorkListOraMapper.xml文件,看该工程及其子工程的编译路径如target里有是否有多个这个文件,导致系统启动的时候,多次加载了这个文件。

(如果是windows系统,可以用everything来快速搜索文件)

大部分情况下,1到4步骤,就可以解决问题了。

特殊情况:

本次的场景比较特殊,在第5步才解决:

原本PubParamWorkListOraMapper.xml这个文件在A工程里,同事将PubParamWorkListOraMapper.xml文件移动到了B工程里。我更新了代码之后,使用IDEA启动就报了文章开头的错误。原因是更新完代码之后,IDEA没有自动重新编译A工程,A工程的target目录下还保留着原来的PubParamWorkListOraMapper.xml文件,而B工程的target里也有这个文件,启动的时候就报了Result Maps collection already contains value for的错。

参考:

关于mybatis启动报Result Maps collection already contains value for ...的问题总结_Evan's Blog ٩(๑❛ᴗ❛๑)۶-CSDN博客

Result Maps collection already contains value for问题相关推荐

  1. Result Maps collection already contains value for

    启动的时候报错,junit报错一样的 Result Maps collection already contains value for mybatis 查了一下应该是  ***mapper.java ...

  2. mybatis报错解决办法 :Result Maps collection does not contain value for java.lang.String

    错误 java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.lang.S ...

  3. Spring集成Mybatis错误Result Maps collection already contains value for XXX

    Spring在集成Mybatis出现如下错误: SpringResult Maps collection already contains value for com.guowei.maven.fra ...

  4. mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap...

    由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/14535 ...

  5. mybatis报错(三)报错Result Maps collection does not contain value for java.lang.Integer解决方法...

    转自:https://blog.csdn.net/zengdeqing2012/article/details/50978682 1 [WARN ] 2016-03-25 13:03:23,955 - ...

  6. java.lang.IllegalArgumentException: Result Maps collection already contains value for ciis.zht.model

    Mybatis报错:java.lang.IllegalArgumentException: Result Maps collection already contains value for ciis ...

  7. Result Maps collection already contains value for com.anoxia.mapper.XXXMapper.BaseResultMap

    关于Mybatis-Generator自动生成出现Result Maps collection already contains value for com.anoxia.mapper.xxxMapp ...

  8. Mybatis错误 Result Maps collection already contains value for xxx

    使用mybatis  启动项目失败 错误信息: org.springframework.beans.factory.BeanCreationException: Error creating bean ...

  9. mybatis报错:Result Maps collection already contains value for model.dao.UserMapper.BaseResultMap

    数据库:8.0.11 数据库驱动包为:mysql-connector-java-8.0.11.jar 使用Mybatis-Generator自动生成Dao.Model.Mapping相关文件后,把文件 ...

  10. mybatis启动报错Result Maps collection already contains value for xxx

    背景: mybatis配置xml启动的时候报错,提示Result Maps collection already contains value for xxx. 原因分析: 同一个xml文件里写的sq ...

最新文章

  1. html向js传递id
  2. javascript功能_功能性JavaScript简介
  3. 用了10多年的 Tomcat 居然有bug,这能忍?
  4. 卡尔曼滤波器中的Q,R
  5. 高性能ASP.NET系统架构设计
  6. Kruskal算法的C语言程序
  7. 项目中使用completablefuture_“工业冷冻用中大型冷盐水机组使用R290替代R22项目”通过验收...
  8. AutoMapper多个对象映射到一个Dto对象
  9. openfire服务器
  10. Angular程序架构
  11. 解说linux下proc文件系统
  12. SHELL(bash)脚本编程四:其他扩展
  13. Centos7上使用Kind搭建Kubernetes环境
  14. WARNING: The converted filename is an ASM fully qualified filename.
  15. Android下使用W25Q32
  16. 蓝桥杯 大臣的旅费 JAVA
  17. 怎么在html的表格中加筛选,excel中表头合并单元格的筛选
  18. 小米oj和为零的三元组
  19. VBS 文本歌词粤语拼音翻译
  20. 8、RH850 F1 IIC通讯功能和配置

热门文章

  1. 详解AnyChart创建flash图表
  2. cmd命令添加用户为管理员
  3. MapReduce之流量汇总案例
  4. 今日早报 每日精选12条新闻简报 每天一分钟 知晓天下事 6月30日
  5. USB2.0差分线设计
  6. Windows系统:驱动器发现错误的解决方法
  7. 好久没有写文章了,真相把自己解决问题的方法都写下来,可是没时间。
  8. 压缩空气储能研究(Matlab代码)
  9. VTK学习笔记(二十一)vtk裁剪求截面面积
  10. 51单片机串口通讯详解