天天看點

關于Result Maps collection already contains value for...報錯

今天遇到一個報錯Result Maps collection already contains value for... 報錯資訊如下:

Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.java.zxf.dao.CountLoginTriedTimesDao.BaseResultMap
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)
	at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:466)
	... 65 more
Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.java.zxf.dao.CountLoginTriedTimesDao.BaseResultMap
	at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:802)
	at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:774)
	at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:556)
	at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:217)
	at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:285)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:252)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:244)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116)
	... 67 more
           

大意是說在我的CountLoginTriedTimesDao.xml中已經存在結果集了 我就去xml中看了一下,果然,BaseResultMap有兩個;其實不單單是BaseResultMap有兩個,全部的增删改查方法都有雙份的,删掉重複的就好了。

More: 那麼,為什麼會出現這種情況呢? 我是用mybatis逆向工程生成的相關映射檔案,第一次生成的時候也沒發現有重複的内容啊?

仔細思考了一下,是因為我第一次生成後,修改了資料庫的表結構,後來又重新生成了一次; 第二次生成的時候,沒有将第一次生成的類和xml檔案删除,而是直接運作了,也成功了,提示是這些檔案都被override了,我以為是将原來的全部覆寫了,原來是在原來後面追加了新的;

解決辦法: 1.比較快速和簡單的辦法,就是将你第一次生成的檔案删除,再生成第二次的檔案; 2.分析源碼,修改源碼或自己編寫插件,可以參考這個文章: https://my.oschina.net/u/137785/blog/736372