欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1.問題現(xiàn)象

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

錯誤日志截圖如下:

image-20240307133901592

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

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

dataSourceConfig中配置的mapperLocations的位置:

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

image-20240307134854615

原來的maper.xml路徑:

image-20240307133520530

2.問題分析

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

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

image-20240307212904427

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

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

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

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

 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)存在批量操作時,會嵌套兩個session的,優(yōu)先commit上一個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方法會將每個實(shí)體類與對應(yīng)的數(shù)據(jù)庫配置保存到緩存:TABLE_INFO_CACHE

img

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

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

上面我們定義2個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.解決辦法

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

修改后的路徑:

image-20240307134715807

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

相關(guān)文章

  • Mybatis如何直接執(zhí)行SQL語句

    Mybatis如何直接執(zhí)行SQL語句

    這篇文章主要介紹了Mybatis如何直接執(zhí)行SQL語句,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • java打包成jar并執(zhí)行jar包中指定的main方法

    java打包成jar并執(zhí)行jar包中指定的main方法

    這篇文章主要介紹了如何將java打包成可執(zhí)行的jar,并執(zhí)行jar包中指定的main方法的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • RocketMq消息隊列之削峰詳解

    RocketMq消息隊列之削峰詳解

    這篇文章主要介紹了RocketMq消息隊列之削峰詳解,MQ的主要特點(diǎn)為解耦、異步、削峰,本篇博客只是簡單的記錄RocketMQ削峰用法,用于減少數(shù)據(jù)庫壓力的業(yè)務(wù)場景,需要的朋友可以參考下
    2023-09-09
  • Java Spring 控制反轉(zhuǎn)(IOC)容器詳解

    Java Spring 控制反轉(zhuǎn)(IOC)容器詳解

    這篇文章主要為大家詳細(xì)介紹了Spring控制反轉(zhuǎn)IoC入門使用的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 在SpringBoot中添加Redis及配置方法

    在SpringBoot中添加Redis及配置方法

    這篇文章主要介紹了在SpringBoot中添加Redis及配置redis的代碼,需要的朋友可以參考下
    2018-10-10
  • Spring Boot熱加載jar實(shí)現(xiàn)動態(tài)插件的思路

    Spring Boot熱加載jar實(shí)現(xiàn)動態(tài)插件的思路

    本文主要介紹在 Spring Boot 工程中熱加載 jar 包并注冊成為 Bean 對象的一種實(shí)現(xiàn)思路,在動態(tài)擴(kuò)展功能的同時支持在插件中注入主程序的 Bean 實(shí)現(xiàn)功能更強(qiáng)大的插件
    2021-10-10
  • Spring依賴注入的幾種方式分享梳理總結(jié)

    Spring依賴注入的幾種方式分享梳理總結(jié)

    這篇文章主要介紹了Spring依賴注入的幾種方式分享梳理總結(jié),文章圍繞主題展開詳細(xì),具有一定參考價值,需要的朋友可以參考一下
    2022-07-07
  • List對象去重和按照某個字段排序的實(shí)現(xiàn)方法

    List對象去重和按照某個字段排序的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄狶ist對象去重和按照某個字段排序的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • 配置Ant執(zhí)行Jmeter腳本過程詳解

    配置Ant執(zhí)行Jmeter腳本過程詳解

    這篇文章主要介紹了配置Ant執(zhí)行Jmeter腳本過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Java8 Optional優(yōu)雅空值判斷的示例代碼

    Java8 Optional優(yōu)雅空值判斷的示例代碼

    這篇文章主要介紹了Java8 Optional優(yōu)雅空值判斷的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05

最新評論