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

springboot連接多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

 更新時(shí)間:2024年08月18日 11:53:01   作者:愛寫B(tài)ug的小孫  
有時(shí)候一個(gè)SpringBoot項(xiàng)目需要同時(shí)連接兩個(gè)數(shù)據(jù)庫(kù),本文就來介紹一下springboot連接多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的可以了解一下

一個(gè)SpringBoot項(xiàng)目,同時(shí)連接兩個(gè)數(shù)據(jù)庫(kù):比如一個(gè)是Mysql數(shù)據(jù)庫(kù),一個(gè)是oracle數(shù)據(jù)庫(kù)(啥數(shù)據(jù)庫(kù)都一樣,連接兩個(gè)同為oracle的數(shù)據(jù)庫(kù),或兩個(gè)不同的數(shù)據(jù)庫(kù),只需要更改對(duì)應(yīng)的driver-class-name和jdbc-url等即可)注意:連接什么數(shù)據(jù)庫(kù),要引入對(duì)應(yīng)數(shù)據(jù)庫(kù)的包。

第一步:

導(dǎo)入pom

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.0</version>
</dependency>
 
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

第二步:

修改application.yml配置文件(我采用本地的,IP地址是一致的,實(shí)際開發(fā)中,是兩臺(tái)云服務(wù),兩臺(tái)MySQL地址進(jìn)行主從讀寫)

    mysql1:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbcUrl: jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      username: "root"
      password: "12345678"
      type: com.alibaba.druid.pool.DruidDataSource
    mysql2:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbcUrl: jdbc:mysql://localhost:3306/test1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      username: "root"
      password: "12345678"
      type: com.alibaba.druid.pool.DruidDataSource

在這里插入圖片描述

注意格式上面spring.datasource省略了

第三步:

建造配置類:
(1)第一個(gè)庫(kù)配置信息:

/**
 * 數(shù)據(jù)庫(kù)leadnews_article
 */
@Configuration
@MapperScan(basePackages = {"com.example.demo.mapper.db1"}, sqlSessionFactoryRef = "sqlSessionFactoryArticle")
public class DBSrcArticle {
    @Bean
    public SqlSessionFactory sqlSessionFactoryArticle(@Qualifier("mysql1") DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/db1/*.xml"));
        return sqlSessionFactory.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplateArticle(@Qualifier("sqlSessionFactoryArticle") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

(2)第二個(gè)庫(kù)配置

/**
 * 數(shù)據(jù)庫(kù)leadnews_user
 */
@Configuration
@MapperScan(basePackages = {"com.example.demo.mapper.db2"}, sqlSessionFactoryRef = "sqlSessionFactoryUser")
public class dBSrcUser {
    @Bean
    @Primary
    public SqlSessionFactory sqlSessionFactoryUser(@Qualifier("mysql2") DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        sqlSessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/db2/*.xml"));
        return sqlSessionFactory.getObject();
    }

    @Bean
    @Primary
    public SqlSessionTemplate sqlSessionTemplateUser(@Qualifier("sqlSessionFactoryUser") SqlSessionFactory sqlSessionFactory) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

(3)數(shù)據(jù)源配置:

/**
 * 數(shù)據(jù)源配置
 */
@Configuration
public class DataSourceConfig {
    @Primary
    @Bean(name = "mysql1")
    @ConfigurationProperties(prefix = "spring.datasource.mysql1")
    public DataSource dBSrcArticle() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "mysql2")
    @ConfigurationProperties(prefix = "spring.datasource.mysql2")
    public DataSource dBSrcUser() {
        return DataSourceBuilder.create().build();
    }
}

注意:連接兩個(gè)以上的數(shù)據(jù)庫(kù),需要對(duì)mapper文件夾進(jìn)行分包!

在這里插入圖片描述

第四步:

在啟動(dòng)類中加上這三個(gè)注解:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@MapperScan(basePackages = {"com.example.demo.entity.db1"}, sqlSessionFactoryRef = "sqlSessionFactoryArticle")
@MapperScan(basePackages = {"com.example.demo.entity.db2"}, sqlSessionFactoryRef = "sqlSessionFactoryUser")

此時(shí):已經(jīng)可以訪問兩個(gè)數(shù)據(jù)庫(kù)內(nèi)容了。

到此這篇關(guān)于springboot連接多個(gè)庫(kù)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)springboot連接多個(gè)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組)

    Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組)

    這篇文章主要介紹了Java ArrayList集合詳解(Java動(dòng)態(tài)數(shù)組),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解Sentinel流量控制限流框架的原理與使用

    詳解Sentinel流量控制限流框架的原理與使用

    Sentinel 是一個(gè)高可用、高擴(kuò)展、高穩(wěn)定性的開源流量控制和熔斷降級(jí)框架,可以在分布式系統(tǒng)中實(shí)現(xiàn)實(shí)時(shí)的流量控制,下面就來和大家聊聊是具體如何操作的吧
    2023-05-05
  • java 判斷二進(jìn)制文件的方法

    java 判斷二進(jìn)制文件的方法

    這篇文章主要介紹了java 判斷二進(jìn)制文件的方法的相關(guān)資料,這里提供實(shí)例來實(shí)現(xiàn)判斷文件是否問二進(jìn)制文件,希望能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java  HttpURLConnection超時(shí)和IO異常處理

    Java HttpURLConnection超時(shí)和IO異常處理

    這篇文章主要介紹了Java HttpURLConnection超時(shí)和IO異常處理的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例

    Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法,簡(jiǎn)單講述了雙鏈表的概念,并結(jié)合實(shí)例形式給出了java雙鏈表實(shí)現(xiàn)任意兩個(gè)節(jié)點(diǎn)交換的操作技巧,需要的朋友可以參考下
    2017-11-11
  • JAVA 16位ID生成工具類含16位不重復(fù)的隨機(jī)數(shù)數(shù)字+大小寫

    JAVA 16位ID生成工具類含16位不重復(fù)的隨機(jī)數(shù)數(shù)字+大小寫

    這篇文章主要介紹了JAVA 16位ID生成工具類含16位不重復(fù)的隨機(jī)數(shù)數(shù)字+大小寫,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 詳解Java編程中線程的掛起、恢復(fù)和終止的方法

    詳解Java編程中線程的掛起、恢復(fù)和終止的方法

    這篇文章主要介紹了詳解Java編程中線程的掛起、恢復(fù)和終止的方法,線程是Java學(xué)習(xí)中的重點(diǎn)和難點(diǎn)知識(shí),需要的朋友可以參考下
    2015-09-09
  • Java中泛型通配符的使用方法示例

    Java中泛型通配符的使用方法示例

    這篇文章主要介紹了Java中泛型通配符的使用方法,結(jié)合實(shí)例形式分析了java中泛型通配符的功能、語法及在泛型類創(chuàng)建泛型對(duì)象中的使用方法,需要的朋友可以參考下
    2019-08-08
  • 關(guān)于Spring統(tǒng)一異常處理及說明

    關(guān)于Spring統(tǒng)一異常處理及說明

    這篇文章主要介紹了關(guān)于Spring統(tǒng)一異常處理及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java Lambda表達(dá)式原理及多線程實(shí)現(xiàn)

    Java Lambda表達(dá)式原理及多線程實(shí)現(xiàn)

    這篇文章主要介紹了Java Lambda表達(dá)式原理及多線程實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論