亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot如何連接兩個(gè)數(shù)據(jù)庫(kù)(多個(gè))

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

一、啟動(dòng)類(lèi)

1.啟動(dòng)類(lèi)需要不用加mybatis的@MapperScan注解

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

二、application.yml文件

配置倆個(gè)或多個(gè)數(shù)據(jù)庫(kù)連接,我這里用的是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)建配置類(lèi)

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

sqlSessionFactoryRef 可以隨便起名 但是著兩個(gè)類(lèi)不能重復(fù)!

One配置類(lèi)

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: 數(shù)據(jù)庫(kù)配置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配置類(lèi)

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: 數(shù)據(jù)庫(kù)配置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);
    }
}

四 、結(jié)構(gòu)

可能有人不清楚項(xiàng)目的結(jié)構(gòu),我在下面放了一張類(lèi)結(jié)構(gòu)圖,能更清晰和方便理解。

注意:和之前的項(xiàng)目的主要區(qū)別就是 mapper包多了一個(gè),mapper的xml包也多了一個(gè),不同的數(shù)據(jù)庫(kù)mapper放到不同的包內(nèi)就可以了。

類(lèi)結(jié)構(gòu)

五、多數(shù)據(jù)源的事物問(wèn)題

在使用多數(shù)據(jù)源時(shí),有可能會(huì)遇到事物失敗的問(wèn)題。我單獨(dú)總結(jié)了一個(gè)文章。需要的話可以閱讀一下。@Transactional注解異常報(bào)錯(cuò)之多數(shù)據(jù)源.

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java對(duì)list<Object>進(jìn)行手動(dòng)分頁(yè)實(shí)現(xiàn)

    java對(duì)list<Object>進(jìn)行手動(dòng)分頁(yè)實(shí)現(xiàn)

    本文主要介紹了java對(duì)list<Object>進(jìn)行手動(dòng)分頁(yè)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java自定義協(xié)議報(bào)文封裝 添加Crc32校驗(yàn)的實(shí)例

    Java自定義協(xié)議報(bào)文封裝 添加Crc32校驗(yàn)的實(shí)例

    下面小編就為大家分享一篇Java自定義協(xié)議報(bào)文封裝 添加Crc32校驗(yàn)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 淺談Spring5 響應(yīng)式編程

    淺談Spring5 響應(yīng)式編程

    本篇文章主要介紹了淺談Spring5 響應(yīng)式編程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目

    SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目

    這篇文章主要介紹了SpringBoot教程_創(chuàng)建第一個(gè)SpringBoot項(xiàng)目,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 深度理解Java訪問(wèn)修飾符

    深度理解Java訪問(wèn)修飾符

    今天帶大家學(xué)習(xí)的是Java的相關(guān)知識(shí),文章圍繞著Java訪問(wèn)修飾符展開(kāi),有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 實(shí)例分析java對(duì)象的序列化和反序列化

    實(shí)例分析java對(duì)象的序列化和反序列化

    序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^(guò)程。一般將一個(gè)對(duì)象存儲(chǔ)至一個(gè)儲(chǔ)存媒介,例如檔案或是記億體緩沖等。在網(wǎng)絡(luò)傳輸過(guò)程中,可以是字節(jié)或是XML等格式。而字節(jié)的或XML編碼格式可以還原完全相等的對(duì)象。這個(gè)相反的過(guò)程又稱(chēng)為反序列化
    2018-09-09
  • Java 如何優(yōu)雅的拋出業(yè)務(wù)異常

    Java 如何優(yōu)雅的拋出業(yè)務(wù)異常

    這篇文章主要介紹了Java 如何優(yōu)雅的拋出業(yè)務(wù)異常,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • 一篇文章帶你了解java Object根類(lèi)中關(guān)于toString,equals的方法

    一篇文章帶你了解java Object根類(lèi)中關(guān)于toString,equals的方法

    這篇文章主要介紹了Object類(lèi)toString()和equals()方法使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java中Object.wait()和LockSupport.park()的用法

    Java中Object.wait()和LockSupport.park()的用法

    Object.wait()和LockSupport.park()都是用來(lái)使當(dāng)前線程等待的方法,本文主要介紹了Java中Object.wait()和LockSupport.park()的用法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • SpringBoot詳解執(zhí)行過(guò)程

    SpringBoot詳解執(zhí)行過(guò)程

    這篇文章主要介紹了SpringBoot的執(zhí)行過(guò)程原理,Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-07-07

最新評(píng)論