[ Mybatis | generator 代码生成问题 ] IllegalArgumentException: Result Maps collection already contains value for


 
报错信息:
org.apache.ibatis.builder. BuilderExceptionError parsing Mapper XML. The XML location is 'com/kkb/mapper/PlayerMapper.xml'.  Cause: java.lang. IllegalArgumentExceptionResult Maps collection already contains value for com.kkb.mapper.PlayerMapper.BaseResultMap

 
人话:
Mapper.xml 中的映射定义重复了,所以出现歧义导致无法解析。

 
如何解决?
1. 查看一下报错信息中所说的 BaseResultMap是否的确重复定义了。直接在xml中全文搜索一看便知(别自己拿眼睛找啊)。
2. 发现确实重复,这里提供两种可能的原因
 
 
情形① :多次生成代码,导致直接追加重复信息
解决 :这个简单,把生成的东西删了(最好也把maven clean一下)重新生成就OK了

 
情形② :这个比较坑!(搞了我一个小时才发现),自动生成会把所有库的同名列表都生成结果导致两个同名的不同表“杂交”在一起……。
为什么说这个地方坑呢?就是因为,你写连接地址的时候都已经指定了某个库,但是生成器根本不care,还是会在每个库中都找一遍!!!
解决:最后我解决得比较粗暴,直接把同名表删了,然后清空生成的映射后再重新生成一次就解决了。因为那个同名的表我也没啥用

补充:
关于表同名该怎么办的最好办法。
例如,你在自己的库中建立了一个user表,可惜的是MySQL库自带user表。此时如何指定生成你预期的库中的user表呢?
<table tableName="user" catalog="your_database_name"/>
答案就是,添加catalog属性来限定库


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM