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

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

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

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

第一步:

導入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地址是一致的,實際開發(fā)中,是兩臺云服務(wù),兩臺MySQL地址進行主從讀寫)

    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)第一個庫配置信息:

/**
 * 數(shù)據(jù)庫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)第二個庫配置

/**
 * 數(shù)據(jù)庫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();
    }
}

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

在這里插入圖片描述

第四步:

在啟動類中加上這三個注解:

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

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

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

相關(guān)文章

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

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

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

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

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

    java 判斷二進制文件的方法

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

    Java HttpURLConnection超時和IO異常處理

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論