最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

調(diào)用Mybatis?plus中的saveBatch方法報(bào)找不到表的問題

 更新時(shí)間:2024年03月13日 08:41:53   作者:小灰灰-58  
在用Mybatis plus開發(fā)的項(xiàng)目中,用自帶的API批量保存的方法saveBatch操作時(shí),發(fā)現(xiàn)報(bào)沒有找到表的錯(cuò)誤,本文就來詳細(xì)的介紹一下解決方法,感興趣的可以了解一下

1.問題現(xiàn)象

在用Mybatis plus開發(fā)的項(xiàng)目中,用自帶的API批量保存的方法saveBatch操作時(shí),發(fā)現(xiàn)報(bào)沒有找到表的錯(cuò)誤。

錯(cuò)誤日志截圖如下:

image-20240307133901592

表實(shí)際是存在的,且發(fā)現(xiàn)其他的方法都沒有問題,包括save、update等單個(gè)的方法,都是正常的。百思不得其解,配置和代碼都沒有問題。

下面是該數(shù)據(jù)源對應(yīng)的配置文件。

dataSourceConfig中配置的mapperLocations的位置:

其apollo中配置的value值為:classpath*:/mapper/*.xml

image-20240307134854615

原來的maper.xml路徑:

image-20240307133520530

2.問題分析

在項(xiàng)目中用了2個(gè)數(shù)據(jù)源,上面是其中的一個(gè)數(shù)據(jù)源。

另一個(gè)數(shù)據(jù)源的mapper.xml配置的路徑是:

image-20240307212904427

其apollo中配置的value值也為:classpath*:/mapper/*.xml

本來是想保存數(shù)據(jù)到A數(shù)據(jù)庫,結(jié)果是執(zhí)行的是另一個(gè)數(shù)據(jù)庫B,其實(shí)是因?yàn)?SqlSessionFactory 錯(cuò)誤導(dǎo)致的。

項(xiàng)目中有2個(gè)數(shù)據(jù)源,分別用的不同的 SqlSessionFactory。

經(jīng)分析跟蹤代碼后發(fā)現(xiàn)執(zhí)行saveBatch后最終調(diào)用到了這個(gè)方法:

 public static boolean executeBatch(Class<?> entityClass, Log log, Consumer<SqlSession> consumer) {
        SqlSessionFactory sqlSessionFactory = sqlSessionFactory(entityClass);
        SqlSessionHolder sqlSessionHolder = (SqlSessionHolder) TransactionSynchronizationManager.getResource(sqlSessionFactory);
        boolean transaction = TransactionSynchronizationManager.isSynchronizationActive();
        if (sqlSessionHolder != null) {
            SqlSession sqlSession = sqlSessionHolder.getSqlSession();
            //原生無法支持執(zhí)行器切換,當(dāng)存在批量操作時(shí),會嵌套兩個(gè)session的,優(yōu)先commit上一個(gè)session
            //按道理來說,這里的值應(yīng)該一直為false。
            sqlSession.commit(!transaction);
        }
        SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
        if (!transaction) {
            log.warn("SqlSession [" + sqlSession + "] was not registered for synchronization because DataSource is not transactional");
        }

com.baomidou.mybatisplus.core.metadata.TableInfoHelper 中 initTableInfo方法會將每個(gè)實(shí)體類與對應(yīng)的數(shù)據(jù)庫配置保存到緩存:TABLE_INFO_CACHE

img

也就是,我們在創(chuàng)建 SqlSessionFactory 時(shí)候設(shè)置的 setMapperLocations, 設(shè)置路徑下的所有mapper.xml 對應(yīng)的實(shí)體都會保存對應(yīng)的數(shù)據(jù)庫配置。

因此,我們需要將不同的 SqlSessionFactory 配置,用不同的 mapper 目錄來掃描。不同數(shù)據(jù)源的操作,放在各自的 mapper 子目錄下,作區(qū)分。

上面我們定義2個(gè)SqlSessionFactory中配置的mapper文件路徑是一樣的。

由于 classpath*:mapper/**/*Mapper.xml 路徑一樣,導(dǎo)致初始化實(shí)體類和數(shù)據(jù)庫配置對應(yīng)關(guān)系,被覆蓋的現(xiàn)象。
即同樣的 mapper.xml 文件中被不同的 SqlSessionFactory 掃描了兩次,導(dǎo)致mapper.xml中的實(shí)體類信息只有一種SqlSessionFactory信息。

3.解決辦法

需要將其中的一個(gè)數(shù)據(jù)源對應(yīng)的mapper文件映射的路徑改一下,改成和另一個(gè)數(shù)據(jù)源配置的路徑不同,就可以了。

修改后的路徑:

image-20240307134715807

到此這篇關(guān)于調(diào)用Mybatis plus中的saveBatch方法報(bào)找不到表的問題的文章就介紹到這了,更多相關(guān)Mybatis plus saveBatch找不到表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 在MyBatis中進(jìn)行分頁查詢的兩種方法詳解

    在MyBatis中進(jìn)行分頁查詢的兩種方法詳解

    在 MyBatis 中進(jìn)行分頁查詢通常有兩種方法:一種是通過手動拼接 LIMIT 和 OFFSET,另一種是使用 MyBatis 插件(如 MyBatis-PageHelper)來自動處理分頁邏輯,下面分別介紹這兩種方法,需要的朋友可以參考下
    2025-11-11
  • 詳解Spring的兩種代理方式:JDK動態(tài)代理和CGLIB動態(tài)代理

    詳解Spring的兩種代理方式:JDK動態(tài)代理和CGLIB動態(tài)代理

    這篇文章主要介紹了詳解Spring的兩種代理方式:JDK動態(tài)代理和CGLIB動態(tài)代理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • java 非對稱加密算法DH實(shí)現(xiàn)詳解

    java 非對稱加密算法DH實(shí)現(xiàn)詳解

    這篇文章主要介紹了java 非對稱加密算法DH實(shí)現(xiàn)詳解 ,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Java源碼解析HashMap成員變量

    Java源碼解析HashMap成員變量

    今天小編就為大家分享一篇關(guān)于Java源碼解析HashMap成員變量,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • springboot在filter中如何用threadlocal存放用戶身份信息

    springboot在filter中如何用threadlocal存放用戶身份信息

    這篇文章主要介紹了springboot中在filter中如何用threadlocal存放用戶身份信息,本文章主要描述通過springboot的filter類,在過濾器中設(shè)置jwt信息進(jìn)行身份信息保存的方法,需要的朋友可以參考下
    2024-07-07
  • Java中token的存儲和獲取實(shí)例代碼

    Java中token的存儲和獲取實(shí)例代碼

    關(guān)于java獲取微信Token驗(yàn)證的問題相信很多人都遇見過,尤其是對剛接觸微信開發(fā)的人來說確實(shí)有點(diǎn)棘手,下面這篇文章主要給大家介紹了關(guān)于Java中token存儲和獲取的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • java遠(yuǎn)程調(diào)用接口、URL的方式代碼

    java遠(yuǎn)程調(diào)用接口、URL的方式代碼

    我們都知道接口有自己本地的,也有遠(yuǎn)程別人寫好的,而調(diào)用遠(yuǎn)程接口的就需要使用遠(yuǎn)程調(diào)用啦,這篇文章主要給大家介紹了關(guān)于java遠(yuǎn)程調(diào)用接口、URL的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • idea導(dǎo)入項(xiàng)目框架的詳細(xì)操作方法

    idea導(dǎo)入項(xiàng)目框架的詳細(xì)操作方法

    大家使用idea開發(fā)工具時(shí)經(jīng)常會需要導(dǎo)入項(xiàng)目框架,糾結(jié)該怎么操作呢,今天小編給大家分享一篇圖文教程,幫助大家解決idea導(dǎo)入項(xiàng)目框架的問題,感興趣的朋友一起看看吧
    2021-05-05
  • 解析Java?中for循環(huán)和foreach循環(huán)哪個(gè)更快

    解析Java?中for循環(huán)和foreach循環(huán)哪個(gè)更快

    這篇文章主要介紹了Java中for循環(huán)和foreach循環(huán)哪個(gè)更快示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java實(shí)現(xiàn)猜拳游戲試題

    java實(shí)現(xiàn)猜拳游戲試題

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)猜拳游戲試題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評論

伽师县| 新沂市| 会昌县| 合山市| 凤翔县| 兰坪| 珲春市| 桑日县| 淮阳县| 遵义县| 合山市| 华容县| 盱眙县| 肥西县| 三门县| 广丰县| 肇源县| 博客| 盈江县| 绵阳市| 荥阳市| 龙游县| 巢湖市| 葵青区| 惠东县| 五大连池市| 长葛市| 阿巴嘎旗| 巴楚县| 芦溪县| 台东市| 辉县市| 阿合奇县| 临桂县| 新营市| 章丘市| 昭觉县| 长海县| 丹江口市| 阳城县| 青岛市|