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

springboot如何連接兩個數據庫(多個)

 更新時間:2022年01月25日 11:54:35   作者:wuyuanshun  
這篇文章主要介紹了springboot如何連接兩個數據庫(多個),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、啟動類

1.啟動類需要不用加mybatis的@MapperScan注解

@SpringBootApplication
public class AppPush {
? ? public static void main(String[] args) {
? ? ? ? SpringApplication.run(AppPush.class,args);
? ? }
}

二、application.yml文件

配置倆個或多個數據庫連接,我這里用的是postgresql,用mysql等也是一樣

spring:
? datasource:
# ? ?driver-class-name: org.postgresql.Driver
# ? ?url: jdbc:postgresql://127.0.0.1/aaa
# ? ?username: root
# ? ?password: root
? ? ? one:
? ? ? ? driver-class-name: org.postgresql.Driver
? ? ? ? url: jdbc:postgresql://127.0.0.1/aaa
? ? ? ? username: root
? ? ? ? password: root
? ? ? two:
? ? ? ? driver-class-name: org.postgresql.Driver
? ? ? ? url: jdbc:postgresql://127.0.0.1/bbb
? ? ? ? username: root
? ? ? ? password: root

三、創(chuàng)建配置類

1.注意:@MapperScan 的basePackages就是你包的路徑 ,

sqlSessionFactoryRef 可以隨便起名 但是著兩個類不能重復!

One配置類

package com.wys.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
/**
 * @program:  
 * @description: 數據庫配置1
 * @author: wys
 * @create: 2019-12-03 16:20
 **/
@Configuration
@MapperScan(basePackages = "com.wys.mapper.**", sqlSessionFactoryRef = "oneSqlSessionFactory")
public class OneDataSourceConfig {
    @Value("${spring.datasource.one.driver-class-name}")
    String driverClass;
    @Value("${spring.datasource.one.url}")
    String url;
    @Value("${spring.datasource.one.username}")
    String userName;
    @Value("${spring.datasource.one.password}")
    String passWord;
    @Primary
    @Bean(name = "oneDataSource")
    @ConfigurationProperties("spring.datasource.one")
    public DataSource masterDataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(passWord);
        return dataSource;
    }
    @Bean(name = "oneSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("oneDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mybatis/mapper-postgre/*.xml"));        
        return sessionFactoryBean.getObject();
    }
    @Bean(name = "oneSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionFactoryTemplate(@Qualifier("oneSqlSessionFactory")SqlSessionFactory sqlSessionFactory ) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

Two配置類

package com.wys.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
/**
 * @program:  
 * @description: 數據庫配置2
 * @author: wys
 * @create: 2019-12-03 17:03
 **/
@Configuration
@MapperScan(basePackages = "com.wys.mappers",sqlSessionFactoryRef = "twoSqlSessionFactory")
public class TwoDataSourceConfig {
    @Value("${spring.datasource.two.driver-class-name}")
    String driverClass;
    @Value("${spring.datasource.two.url}")
    String url;
    @Value("${spring.datasource.two.username}")
    String userName;
    @Value("${spring.datasource.two.password}")
    String passWord;
    
    @Bean(name = "twoDataSource")
    @ConfigurationProperties("spring.datasource.two")
    public DataSource masterDataSource(){
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverClass);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(passWord);
        return dataSource;
    }
    @Bean(name = "twoSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("twoDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mybatis/mapper-postgres/*.xml"));         
        return sessionFactoryBean.getObject();
    }
    
    @Bean(name = "twoSqlSessionTemplate")
    public SqlSessionTemplate sqlSessionFactoryTemplate(@Qualifier("twoSqlSessionFactory")SqlSessionFactory sqlSessionFactory ) throws Exception {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

四 、結構

可能有人不清楚項目的結構,我在下面放了一張類結構圖,能更清晰和方便理解。

注意:和之前的項目的主要區(qū)別就是 mapper包多了一個,mapper的xml包也多了一個,不同的數據庫mapper放到不同的包內就可以了。

類結構

五、多數據源的事物問題

在使用多數據源時,有可能會遇到事物失敗的問題。我單獨總結了一個文章。需要的話可以閱讀一下。@Transactional注解異常報錯之多數據源.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java線程的聯合用法實例分析

    Java線程的聯合用法實例分析

    這篇文章主要介紹了Java線程的聯合用法,結合實例形式分析了java線程聯合的原理、實現方法及相關操作技巧,需要的朋友可以參考下
    2019-10-10
  • Java之JsonArray用法講解

    Java之JsonArray用法講解

    這篇文章主要介紹了Java之JsonArray用法講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 詳解Java中的Lambda表達式

    詳解Java中的Lambda表達式

    這篇文章主要介紹了Java中的Lambda表達式的的相關資料,文中講解非常詳細,示例代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06
  • springboot手動事務回滾的實現代碼

    springboot手動事務回滾的實現代碼

    這篇文章主要介紹了springboot手動事務回滾的實現方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • IDEA連接mysql保姆級教學教程

    IDEA連接mysql保姆級教學教程

    學習使用IDEA的時候,需要連接Database,下面這篇文章主要給大家介紹了關于IDEA連接mysql的保姆級教學教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 教你如何編寫簡單的網絡爬蟲

    教你如何編寫簡單的網絡爬蟲

    實際的爬蟲是從一系列的種子鏈接開始。種子鏈接是起始節(jié)點,種子頁面的超鏈接指向的頁面是子節(jié)點(中間節(jié)點),對于非html文檔,如excel等,不能從中提取超鏈接,看做圖的終端節(jié)點
    2013-10-10
  • 顯示IntelliJ IDEA工具的Run Dashboard功能圖文詳解

    顯示IntelliJ IDEA工具的Run Dashboard功能圖文詳解

    這篇文章主要介紹了顯示IntelliJ IDEA工具的Run Dashboard功能,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • mybatis查詢返回Map<String,Object>類型的講解

    mybatis查詢返回Map<String,Object>類型的講解

    這篇文章主要介紹了mybatis查詢返回Map<String,Object>類型的講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Log4j定時打印日志及添加模塊名配置的Java代碼實例

    Log4j定時打印日志及添加模塊名配置的Java代碼實例

    這篇文章主要介紹了Log4j定時打印日志及添加模塊名配置的Java代碼實例,Log4j是Apache的一個開源Java日志項目,需要的朋友可以參考下
    2016-01-01
  • Java枚舉_動力節(jié)點Java學院整理

    Java枚舉_動力節(jié)點Java學院整理

    enum 的全稱為 enumeration, 是 JDK 5 中引入的新特性,存放在 java.lang 包中。這篇文章給大家介紹Java枚舉相關知識,需要的的朋友參考下
    2017-04-04

最新評論

崇文区| 宁晋县| 平顶山市| 治多县| 龙海市| 怀宁县| 吉安市| 长葛市| 天门市| 安义县| 靖江市| 汝城县| 蓝田县| 陈巴尔虎旗| 始兴县| 鹤庆县| 建宁县| 民县| 沛县| 荣成市| 台北县| 中超| 高尔夫| 普安县| 天等县| 翁牛特旗| 滁州市| 衡南县| 永嘉县| 山东| 钟祥市| 枝江市| 藁城市| 内丘县| 宜宾市| 台州市| 绥中县| 马尔康县| 调兵山市| 凯里市| 土默特左旗|