国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mybatis(plus)多數(shù)據(jù)源

這篇具有很好參考價(jià)值的文章主要介紹了mybatis(plus)多數(shù)據(jù)源。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

? ? ?一個(gè)項(xiàng)目大部分都是單一數(shù)據(jù)庫(kù)多一些,但是有時(shí)候會(huì)需要用多個(gè)庫(kù),所以這時(shí)候據(jù)需要使用多數(shù)據(jù)源。我這里使用springboot+mybatis(plus)+druid多數(shù)據(jù)源.

目前我知道有兩種方式,一種方式是需要在service實(shí)現(xiàn)類(lèi)上添加@DS,一種方式是通過(guò)配置的方式,配置不同的SqlSessionFactory實(shí)現(xiàn)。

1. 第一種方式

? 這種方式主要通過(guò)配置不同的SqlSessionFactory實(shí)現(xiàn)。

1.1 引入依賴

 <dependencies>
        <!--        第一步:選擇ORM框架,使用springboot整合mybatis-plus依賴包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--        第二步:選擇數(shù)據(jù)庫(kù)驅(qū)動(dòng),這里是Mysql所以就選擇Mysql的驅(qū)動(dòng),PG的就選擇PG-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!--        第三步(可選):數(shù)據(jù)庫(kù)連接池,可以使用druid的連接池。springboot-jdbc已經(jīng)默認(rèn)依賴了Hikari的連接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>
    </dependencies>

?1.2 增加配置

#druid數(shù)據(jù)庫(kù)鏈接池配置
spring:
  datasource:
    #1.JDBC
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      myboot:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myboot?useUnicode=true&characterEncoding=utf8
        username: root
        password: root
      mydatabase:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8
        username: root
        password: root

1.3 配置myboot的源連接

@Configuration
@MapperScan(basePackages = "com.lx.mybatisplus.myboot.mappers", sqlSessionTemplateRef = "mybootSqlSessionTemplate")
public class MyBootDataSourceConfig {


    @Bean(name = "myboot")
    @ConfigurationProperties(prefix = "spring.datasource.druid.myboot")
    public DruidDataSource myboot() {
        DruidDataSource myboot = new DruidDataSource();
        return myboot;
    }

    @Primary
    @Bean("mybootSqlSessionFactory")
    public SqlSessionFactory psiSqlSessionFactory() throws Exception {
        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
        factoryBean.setDataSource(myboot());

        MybatisConfiguration configuration = new MybatisConfiguration();
        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
        configuration.setJdbcTypeForNull(JdbcType.NULL);
        factoryBean.setConfiguration(configuration);
        //指定xml路徑.
//        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/a/b/c/d/e/psi/mapper/*Dao.xml"));

        //這里可以設(shè)置MetaObjectHandler
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setMetaObjectHandler(new MetaObjectHandler() {
            @Override
            public void insertFill(MetaObject metaObject) {

            }

            @Override
            public void updateFill(MetaObject metaObject) {

            }
        });
        factoryBean.setGlobalConfig(globalConfig);
        return factoryBean.getObject();
    }

    @Bean("mybootTransactionManager")
    @Primary
    // 數(shù)據(jù)源事務(wù)管理器
    public DataSourceTransactionManager mybootTransactionManager(@Qualifier("myboot") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }


    @Primary
    @Bean("mybootSqlSessionTemplate")
    public SqlSessionTemplate psiSqlSessionTemplate() throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(psiSqlSessionFactory()); // 使用上面配置的Factory
        return template;
    }
}

?1.4 配置mydatabase的源連接

@Configuration
@MapperScan(basePackages = "com.lx.mybatisplus.mydatabase.mappers", sqlSessionTemplateRef = "mydatabaseSqlSessionTemplate")
public class MyDataBaseDataSourceConfig {

    @Primary
    @Bean(name = "mydatabase")
    @ConfigurationProperties(prefix = "spring.datasource.druid.mydatabase")
    public DruidDataSource mydatabase() {
        return new DruidDataSource();
    }

    @Bean("mydatabaseSqlSessionFactory")
    public SqlSessionFactory mydatabaseSqlSessionFactory() throws Exception {
        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
        factoryBean.setDataSource(mydatabase());

        MybatisConfiguration configuration = new MybatisConfiguration();
        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
        configuration.setJdbcTypeForNull(JdbcType.NULL);
        factoryBean.setConfiguration(configuration);
        return factoryBean.getObject();
    }

    @Bean("mydatabaseTransactionManager")
    // 數(shù)據(jù)源事務(wù)管理器
    public DataSourceTransactionManager mydatabaseTransactionManager(@Qualifier("mydatabase") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    @Bean("mydatabaseSqlSessionTemplate")
    public SqlSessionTemplate b2bSqlSessionTemplate() throws Exception {
        SqlSessionTemplate template = new SqlSessionTemplate(mydatabaseSqlSessionFactory()); // 使用上面配置的Factory
        return template;
    }
}

因?yàn)槭莾蓚€(gè)源,所以使用了兩個(gè)事務(wù)管理。需要使用 @Transcational() 注解來(lái)使用事務(wù)管理器。
但是我們實(shí)際上注冊(cè)了兩個(gè), 如果不指定事務(wù)管理器的,
springboot是不知道該使用那個(gè)的。
不過(guò)我們?cè)谧?cè)的時(shí)候,在 @Bean(name = "mybootTransactionManager"), 這一行下面使用了 @Primary 注解。所以我們的spring會(huì)默認(rèn)使用 mybootTransactionManager這個(gè)事務(wù)管理器。

如果當(dāng)你需要用到 另一個(gè)事務(wù)管理器的時(shí)候,你需要在你的 @Transcational 注解中指定事務(wù)管理器名稱
ps: 使用事務(wù)的方法或者類(lèi)上指定事務(wù)管理器。

@Transactional(readOnly = true, transactionManager = "mybootTransactionManager")
@Transactional(readOnly = true, transactionManager = "mydatabaseTransactionManager")

這樣就配置完成了,因?yàn)橹付薭asePackages 對(duì)應(yīng)的sqlSessionTemplateRef,所以就可以區(qū)分不同的源配置了

2.第二種方式

?這種方式主要使用@DS注解,在使用的地方指定就行

2.1 依賴

 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.5.0</version>
        </dependency>

?2.2 配置文件

#druid數(shù)據(jù)庫(kù)鏈接池配置
spring:
  datasource:
    #1.JDBC
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      myboot:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/myboot?useUnicode=true&characterEncoding=utf8
        username: root
        password: root
      mydatabase:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf8
        username: root
        password: root

2.3?在service實(shí)現(xiàn)類(lèi)上添加@DS

@Service
@DS("myboot")
public class ProductServiceImpl extends ServiceImpl<ProductMapper,Product> implements ProductService {
}
@Service
@DS("mydatabase")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

這樣就完成了配置不同源,但是這種方式局限性太大,所以建議還是使用第一種方式。

參考:

Springboot+mybatis(plus)+druid多數(shù)據(jù)源 - 知乎

Java學(xué)習(xí) --- mybatisplus配置多數(shù)據(jù)源_鴨鴨老板的博客-CSDN博客_mybatisplus多數(shù)據(jù)源配置文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-457128.html

到了這里,關(guān)于mybatis(plus)多數(shù)據(jù)源的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • springBoot-Mybatis-Plus 多數(shù)據(jù)源切換實(shí)現(xiàn)

    springBoot-Mybatis-Plus 多數(shù)據(jù)源切換實(shí)現(xiàn)

    前言:本文主要通過(guò)AbstractRoutingDataSource,實(shí)現(xiàn)根據(jù) http 訪問(wèn)攜帶的標(biāo)識(shí)動(dòng)態(tài)切換數(shù)據(jù)源; 1 AbstractRoutingDataSource 介紹: AbstractRoutingDataSource 是 Spring 框架中的一個(gè)抽象類(lèi),它可以用來(lái)實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換。在多數(shù)據(jù)源場(chǎng)景下,AbstractRoutingDataSource 可以根據(jù)不同的請(qǐng)求來(lái)動(dòng)態(tài)地選

    2024年02月03日
    瀏覽(23)
  • Springboot 配置動(dòng)態(tài)多數(shù)據(jù)源(Mybatis-plus)

    Springboot 配置動(dòng)態(tài)多數(shù)據(jù)源(Mybatis-plus)

    前言:在項(xiàng)目中需要用到動(dòng)態(tài)切換多數(shù)據(jù)源,查閱Mybatis-plus文檔得知可以通過(guò)@DS注解,但該方法主要針對(duì)不同內(nèi)容的數(shù)據(jù)源,而目前場(chǎng)景是相同內(nèi)容的數(shù)據(jù)庫(kù)需要在運(yùn)行時(shí)根據(jù)請(qǐng)求頭動(dòng)態(tài)切換,因此文檔方法不適用。 注意,不要使用dynamic-datasource-spring-boot-starter依賴包。 應(yīng)用

    2024年02月12日
    瀏覽(23)
  • grpc + springboot + mybatis-plus 動(dòng)態(tài)配置數(shù)據(jù)源

    grpc + springboot + mybatis-plus 動(dòng)態(tài)配置數(shù)據(jù)源

    前言 這是我在這個(gè)網(wǎng)站整理的筆記,關(guān)注我,接下來(lái)還會(huì)持續(xù)更新。 作者:神的孩子都在歌唱 1.1 項(xiàng)目初始化 項(xiàng)目初始化的時(shí)候會(huì)調(diào)用com.baomidou.dynamic.datasource.DynamicRoutingDataSource對(duì)象的addDataSource方法添加數(shù)據(jù)源,數(shù)據(jù)源存進(jìn)dataSourceMap中。 1.2 接口請(qǐng)求時(shí)候 進(jìn)行數(shù)據(jù)操作時(shí),

    2024年02月09日
    瀏覽(30)
  • 手搭手入門(mén)Mybatis-Plus配置多數(shù)據(jù)源

    手搭手入門(mén)Mybatis-Plus配置多數(shù)據(jù)源

    https://baomidou.com/ 為簡(jiǎn)化開(kāi)發(fā)而生 MyBatis-Plus(opens new window)(簡(jiǎn)稱 MP)是一個(gè) MyBatis (opens new window) 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生。 無(wú)侵入 :只做增強(qiáng)不做改變,引入它不會(huì)對(duì)現(xiàn)有工程產(chǎn)生影響,如絲般順滑 損耗小 :?jiǎn)?dòng)即會(huì)自

    2024年02月07日
    瀏覽(31)
  • SpringBoot整合Mybatis-Plus、Druid配置多數(shù)據(jù)源

    SpringBoot整合Mybatis-Plus、Druid配置多數(shù)據(jù)源

    目錄 1.初始化項(xiàng)目 1.1.初始化工程 1.2.添加依賴 1.3.配置yml文件 1.4.Spring Boot 啟動(dòng)類(lèi)中添加?@MapperScan?注解,掃描 Mapper 文件夾 1.5.配置使用數(shù)據(jù)源 1.5.1.注解方式 1.5.2.基于AOP手動(dòng)實(shí)現(xiàn)多數(shù)據(jù)源原生的方式 2.結(jié)果展示 Mybatis-Plus:簡(jiǎn)介 | MyBatis-Plus (baomidou.com) 在正式開(kāi)始之前,先初始

    2024年02月11日
    瀏覽(24)
  • SpringBoot整合Mybatis-Plus+Druid實(shí)現(xiàn)多數(shù)據(jù)源

    SpringBoot整合Mybatis-Plus+Druid實(shí)現(xiàn)多數(shù)據(jù)源

    ??本文主要講解 springboot +mybatisplus + druid 實(shí)現(xiàn)多數(shù)據(jù)源配置功能 ?? 主頁(yè)傳送門(mén):?? 傳送 Spring Boot: ? ?Spring Boot是一個(gè)基于Spring框架的開(kāi)源Java開(kāi)發(fā)框架,旨在簡(jiǎn)化Spring應(yīng)用程序的開(kāi)發(fā)、配置和部署。它提供了一種快速、敏捷的方式來(lái)構(gòu)建獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用程

    2024年02月09日
    瀏覽(25)
  • 【SpringBoot 3.x】整合Mybatis-Plus多數(shù)據(jù)源、Druid

    【SpringBoot 3.x】整合Mybatis-Plus多數(shù)據(jù)源、Druid

    開(kāi)發(fā)依賴 版本 Spring Boot 3.0.6 Mybatis-Plus 3.5.3.1 dynamic-datasource-spring-boot-starter 3.6.1 JDK 20 SpringBoot啟動(dòng)類(lèi)修改 由于排除了DruidDataSourceAutoConfigure類(lèi)的自動(dòng)裝載,就需要手工指定裝配以下幾個(gè)類(lèi) 查看DruidDataSourceAutoConfigure這個(gè)類(lèi)的源碼可以看出,需要把@Import帶進(jìn)來(lái)的幾個(gè)類(lèi)進(jìn)行自動(dòng)裝

    2024年02月04日
    瀏覽(54)
  • SpringBoot+MyBatis-Plus多數(shù)據(jù)源@DS注解失效的解決方法

    引入 dynamic-datasource: application.yml 數(shù)據(jù)源配置: 詳細(xì)使用請(qǐng)看 MyBatis-Plus官網(wǎng) 這種場(chǎng)景還是比較常見(jiàn),比如在一個(gè)為master數(shù)據(jù)源的調(diào)用slave數(shù)據(jù)源就會(huì)失效 slave數(shù)據(jù)源Service方法 mater數(shù)據(jù)源Service方法調(diào)用slave數(shù)據(jù)源Service方法 這里會(huì)出現(xiàn)沒(méi)有走slave_1,依然還是master數(shù)據(jù)源 需要在

    2024年01月18日
    瀏覽(28)
  • Dynamic DataSource 多數(shù)據(jù)源配置【 Springboot + DataSource + MyBatis Plus + Druid】

    Dynamic DataSource 多數(shù)據(jù)源配置【 Springboot + DataSource + MyBatis Plus + Druid】

    MybatisPlus多數(shù)據(jù)源配置主要解決的是多數(shù)據(jù)庫(kù)連接和切換的問(wèn)題。在一些大型應(yīng)用中,由于數(shù)據(jù)量的增長(zhǎng)或者業(yè)務(wù)模塊的增多,可能需要訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)。這時(shí),就需要配置多個(gè)數(shù)據(jù)源。 2.1.1、引用依賴 2.1.2、application.yml 配置 2.1.3、通用配置類(lèi) 2.1.4、使用方式 這里便不過(guò)多的

    2024年02月03日
    瀏覽(32)
  • Spring Boot + MyBatis-Plus 實(shí)現(xiàn) MySQL 主從復(fù)制動(dòng)態(tài)數(shù)據(jù)源切換

    Spring Boot + MyBatis-Plus 實(shí)現(xiàn) MySQL 主從復(fù)制動(dòng)態(tài)數(shù)據(jù)源切換

    MySQL 主從復(fù)制是一種常見(jiàn)的數(shù)據(jù)庫(kù)架構(gòu),它可以提高數(shù)據(jù)庫(kù)的性能和可用性。 動(dòng)態(tài)數(shù)據(jù)源切換則可以根據(jù)業(yè)務(wù)需求,在不同場(chǎng)景下使用不同的數(shù)據(jù)源,比如在讀多寫(xiě)少的場(chǎng)景下,可以通過(guò)切換到從庫(kù)來(lái)分擔(dān)主庫(kù)的壓力 。 在本文中,我們將介紹如何在 Spring Boot 中實(shí)現(xiàn) MySQL 動(dòng)

    2024年02月19日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包