解決Mybatis中mapper的ID沖突問(wèn)題
mapper 的id沖突原因:
原因一:
在同一個(gè)mapper.xml中存在相同的ID
原因二:
同時(shí)使用了xml配置和注解配置
解決方案:
只保留xml或者注解即可!!!

Mybatis mapper文件下同一id 查詢結(jié)果列不同問(wèn)題
場(chǎng)景描述:
訂單數(shù)據(jù)按天分表,正常情況下每一天的表結(jié)構(gòu)都是一樣的,表名命名格式order_yyyyMMdd。
定義一個(gè)查詢?nèi)缦拢?/p>
<select id="orderSelect" parameterClass="java.util.HashMap" resultClass="com.xxx">
select * from order_$table_suffix$
where ...
</select>
如果我查詢18年10月1日數(shù)據(jù),則傳參數(shù)table_suffix=20181001,如果我查詢18年10月2日數(shù)據(jù),則傳參數(shù)table_suffix=20181002.即可。
系統(tǒng)運(yùn)行了若干天,到了18年12月30日,order表添加了新的字段a。以后的訂單表都會(huì)添加該字段。對(duì)應(yīng)的實(shí)體類也添加了對(duì)應(yīng)字段。應(yīng)該沒(méi)有問(wèn)題了,更新并重啟程序。先查詢今天的數(shù)據(jù),沒(méi)有問(wèn)題。在查詢之前的數(shù)據(jù),發(fā)現(xiàn)程序報(bào)錯(cuò)了,找不到字段a.
解決方法:
修改id 為orderSelect 的查詢
<select id="orderSelect" remapResults="true" parameterClass="java.util.HashMap" resultClass="com.xxx">
select * from order_$table_suffix$
where ...
</select>
對(duì)比發(fā)現(xiàn)添加了 remapResults="true"的配置
總結(jié) :
mybatis 默認(rèn)remapResults屬性為false,會(huì)導(dǎo)致同一查詢id 查出來(lái)的字段一直都是固定的。設(shè)置為true的話,則每次查詢查出來(lái)的列可以不相同,這樣才能應(yīng)對(duì)不同的表結(jié)構(gòu)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringBoot時(shí)間參數(shù)處理完整解決方案
這篇文章主要介紹了詳解SpringBoot時(shí)間參數(shù)處理完整解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之循環(huán)鏈表
循環(huán)鏈表是另一種形式的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。它的特點(diǎn)是表中最后一個(gè)結(jié)點(diǎn)的指針域指向頭結(jié)點(diǎn),整個(gè)鏈表形成一個(gè)環(huán)。本文將為大家詳細(xì)介紹一下循環(huán)鏈表的特點(diǎn)與使用,需要的可以了解一下2021-12-12
關(guān)于JVM垃圾回收的java.lang.ref.Finalizer問(wèn)題
這篇文章主要介紹了關(guān)于JVM垃圾回收的java.lang.ref.Finalizer問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
Springcloud hystrix服務(wù)熔斷和dashboard如何實(shí)現(xiàn)
這篇文章主要介紹了Springcloud hystrix服務(wù)熔斷和dashboard如何實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
java基本教程之常用的實(shí)現(xiàn)多線程的兩種方式 java多線程教程
下面開始學(xué)習(xí)“常用的實(shí)現(xiàn)多線程的2種方式”:Thread 和 Runnable。之所以說(shuō)是常用的,是因?yàn)橥ㄟ^(guò)還可以通過(guò)java.util.concurrent包中的線程池來(lái)實(shí)現(xiàn)多線程2014-01-01
解析Java和Eclipse中加載本地庫(kù)(.dll文件)的詳細(xì)說(shuō)明
本篇文章是對(duì)Java和Eclipse中加載本地庫(kù)(.dll文件)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn)
這篇文章主要介紹了SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Spring MVC請(qǐng)求參數(shù)與響應(yīng)結(jié)果全局加密和解密詳解
這篇文章主要給大家介紹了關(guān)于Spring MVC請(qǐng)求參數(shù)與響應(yīng)結(jié)果全局加密和解密的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08

