[ 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