Mybatis報錯 Result Maps collection already contains value for 原因匯總

當(dāng)Mybatis報錯 Result Maps collection already contains value for的時候,有哪些原因呢?

一、Mybatis-Generator根據(jù)配置文件生成XML的鍋

Mybatis-Generator生成xml等又快有方便,但是如果同名xml之前已經(jīng)存在,那么生成的時候會在xml里面在之前的代碼后面繼續(xù)追加,而不會覆蓋同名的語句。因此有可能報這個錯誤

解決方案

如果是再次生成代碼,必須先將已經(jīng)生成的代碼刪除,仔細(xì)檢查一下xml文件看是否存在兩個id為BaseResultMap的resultMap,刪除多余的,只保留一個就可以解決問題。

二、同一個mapper.xml文件中沒有id相同的resultMap,但是存在多個相同名稱的xml文件,這些xml文件都能被掃描到,而且不同的xml文件中包含相同id的resultMap

解決方案

刪除測試文件夾下的resources目錄下的與mapper.xml同名的xml文件,或是修改測試文件夾中xml文件中的resultMap的id,確保同名的xml中沒有相同id的resultMap。

三、spring boot + mybatis

在spring boot的application.properties中,配置了mybatis.config-location=classpath:mybatis-config.xml mybatis.mapper-locations=classpath*:mapper/*.xml。這樣相當(dāng)于mapper的配置被配置了兩遍。

解決方案

把mybatis-config.xml中的mappers部分刪除

四、應(yīng)該用resultMap來接收返回值,卻用了resultType

解決方案

1.當(dāng)返回值為List<XXX>泛型時,使用resultType = "XXX" 的類型

2.當(dāng)XXX 是PO類,且映射不完全,即表中operate_time,po中對應(yīng)的映射字段為operateTime

? 使用resultMap

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容