解決Mybatis中mapper的ID沖突問題
原因一:
在同一個mapper.xml中存在相同的ID
原因二:
同時使用了xml配置和注解配置
解決方案:只保留xml或者注解即可!!!
訂單數(shù)據(jù)按天分表,正常情況下每一天的表結構都是一樣的,表名命名格式order_yyyyMMdd。
定義一個查詢?nèi)缦拢?/p>
<select 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)運行了若干天,到了18年12月30日,order表添加了新的字段a。以后的訂單表都會添加該字段。對應的實體類也添加了對應字段。應該沒有問題了,更新并重啟程序。先查詢今天的數(shù)據(jù),沒有問題。在查詢之前的數(shù)據(jù),發(fā)現(xiàn)程序報錯了,找不到字段a.
解決方法:修改id 為orderSelect 的查詢
<select remapResults='true' parameterClass='java.util.HashMap' resultClass='com.xxx'> select * from order_$table_suffix$ where ...</select>
對比發(fā)現(xiàn)添加了 remapResults='true'的配置
總結 :mybatis 默認remapResults屬性為false,會導致同一查詢id 查出來的字段一直都是固定的。設置為true的話,則每次查詢查出來的列可以不相同,這樣才能應對不同的表結構。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關文章:
1. Access中批量替換數(shù)據(jù)庫內(nèi)容的兩種方法2. DB2 變更管理工具與Rational DA集成(1)3. 在Redhat Enterprise server 3上安裝oracle9iR2的注意事項4. Oracle OCCI的一個簡單的包裝類的實現(xiàn)5. SQL Server 2005使用基于行版本控制的隔離級別初探(3) -- SNAPSHOT6. Microsoft Office Access添加網(wǎng)格線的方法7. oracle觸發(fā)器介紹8. Access數(shù)據(jù)庫安全的幾個問題9. MySQL中 concat函數(shù)的使用10. Delphi中的Access技巧集
