一、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文件被掃描了多次,導致異常。