MyBatis报错:Mapped Statements collection already contains value for XXX 的可能原因

一、Mapped Statements collection already contains value for XXX 的可能原因

  今天在MyBatis遇到报错:Mapped Statements collection already contains value for auditExam,原因是因为auditExam写重复了,所以顺便把查到的可能原因记录一下。

1、Mapper中存在了重复的id(同一个Mapper.xml 文件中重复出现了两个id 为XXX的方法)

  那么就需要好好检查程序报错的地方,调用对应的mapper文件里的方法id了,看看是否id命名一样

2、有可能是parameterType和resultType,参数类型错误

  仔细检查方法中的parameterType和resultType,查看相应的参数类型是否有错,或者有空的忘记写了

3、有可能你的sqlSessionFactory中配置了多个xml的地址。

  这时就需要仔细查看你的配置文件,是否将xml地址配重复了,将多余的删除掉。

4、若你项目中使用了2个xml文件去对应了一个.java文件,引用了同一个方法,而方法id相同就可能会出 现,比如:userDao.xml,userExlDao.xml,有多个mapper.xml, 执行sql时是随机找了一个xml来绑定ResultMap,就可能会出现此问题,那么这个时候就需要指定xml文件的加载顺序了。

5、多数据源的情况下,同一mapper文件被扫描了多次,导致异常。

原文地址:https://www.cnblogs.com/goloving/p/14915202.html