写cappella项目的时候遇到一个让我解决了很久的问题:
Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTableMapper.TempTestTableResult
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTableMapper.TempTestTableResult
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:578)
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:551)
at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:356)
at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:138)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:231)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:201)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:196)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:93)
... 31 more
我的解决办法:
用mybatisGenerator 生成的代码,删除掉mapper中的文件,重新生成mapper,重新编译运行,通过。
网上找的可能的原因:
- eclipse编译了一份在bin目录下,将bin目录或者WEB-INF下class目录清空即可
- 由于使用ibatis的TempTestTableMapper.xml实现接口TempTestTableMapper.java中的方法的时候的id有重复的值,比如
<select id="queryTempTestTableMap" resultMap="TempTestTableResult">
中的TempTestTableResult在一个xml文件中有两个这样的id,修改过来即可