问题描述
整合 SpringBoot 与 MyBatis 过程中出现如下错误:
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.demo.zhulong.base.dao.VideosMapper.VideoBaseResultMap
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782)
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754)
at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:536)
at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:207)
at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:284)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:251)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:243)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)
... 34 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:59695', transport: 'socket'
重点错误信息:Result Maps collection already contains value for XXXXX...
原因解析
由于 mapping 等文件由 mybatis genrator 生成工具自动生成,如果在未删除旧的文件时再次使用工具生成文件,生成的 mapping 文件采用内容追加方式(如下图所示),dao 与 vo 文件内容不变。
解决方法
删除重复生成的代码部分,只保留一次即可。