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

SpringBoot項(xiàng)目中同時(shí)操作多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

 更新時(shí)間:2022年03月14日 17:16:48   作者:智慧包  
在實(shí)際項(xiàng)目開發(fā)中可能存在需要同時(shí)操作兩個(gè)數(shù)據(jù)庫(kù)的場(chǎng)景,本文主要介紹了SpringBoot項(xiàng)目中同時(shí)操作多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在實(shí)際項(xiàng)目開發(fā)中可能存在需要同時(shí)操作兩個(gè)數(shù)據(jù)庫(kù)的場(chǎng)景,比如從A庫(kù)讀取數(shù)據(jù),進(jìn)行操作后往B庫(kù)中寫入數(shù)據(jù),此時(shí)就需要進(jìn)行多數(shù)據(jù)庫(kù)配置。本文以操作本地和線上的MySQL數(shù)據(jù)庫(kù)為例:

一、導(dǎo)入相關(guān)pom文件

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.5</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.3</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

二、application.yml配置文件編寫

單數(shù)據(jù)源的配置如下:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/meal_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

多數(shù)據(jù)源的配置如下:

spring:
  datasource:
    dev:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbcUrl: jdbc:mysql://xxx.xx.xx.xx:3306/meal_order?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      username: root
      password: root
      type: com.alibaba.druid.pool.DruidDataSource
    local:
      driver-class-name: com.mysql.cj.jdbc.Driver
      jdbcUrl: jdbc:mysql://127.0.0.1:3306/db2021?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
      username: root
      password: root
      type: com.alibaba.druid.pool.DruidDataSource

經(jīng)過對(duì)比可以發(fā)現(xiàn):
1、多數(shù)據(jù)源的配置中需要指定具體的名稱來區(qū)分不同的數(shù)據(jù)庫(kù)(上述配置中的dev和local,名稱可以根據(jù)具體需求自定義)
2、需要使用jdbcUrl代替url

三、數(shù)據(jù)庫(kù)連接配置文件

dev數(shù)據(jù)源配置文件:

@Configuration
@MapperScan(basePackages = "com.multiple.mapper.dev",sqlSessionFactoryRef = "devSqlSessionFactory")
public class DevDataSourceConfig {
    @Primary
    @Bean(name = "devDataSource")
    @ConfigurationProperties("spring.datasource.dev")
    public DataSource masterDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "devSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("devDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapping/dev/*.xml"));
        return sessionFactoryBean.getObject();
    }
}

local數(shù)據(jù)源配置文件:

@Configuration
@MapperScan(basePackages = "com.multiple.mapper.local",sqlSessionFactoryRef = "localSqlSessionFactory")
public class LocalDataSourceConfig {
    @Primary
    @Bean(name = "localDataSource")
    @ConfigurationProperties("spring.datasource.local")
    public DataSource masterDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "localSqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("localDataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(dataSource);
        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapping/local/*.xml"));
        return sessionFactoryBean.getObject();
    }
}

不同配置文件通過@MapperScan注解的內(nèi)容來區(qū)分不同數(shù)據(jù)庫(kù)下的mapper文件,通過@ConfigurationProperties注解來加載指定的數(shù)據(jù)源

以DevDataSourceConfig為例

在這里插入圖片描述

四、主啟動(dòng)類注解修改

@SpringBootApplication(exclude={<!--{C}%3C!%2D%2D%20%2D%2D%3E-->DataSourceAutoConfiguration.class})

目錄結(jié)構(gòu)如下:

在這里插入圖片描述

五、測(cè)試

從dev庫(kù)中查詢數(shù)據(jù),取出字段插入local庫(kù)中:

public interface DevMapper {
    @Select("select * from test")
    List<Test> getAllTest();
}
public interface LocalMapper {
    @Insert("insert into payment(serial) values (#{name})")
    int insertMessage(String name);
}
@SpringBootTest
class MultipleDatabaseApplicationTests {

    @Autowired
    private DevMapper devMapper;

    @Autowired
    private LocalMapper localMapper;

    @Test
    void contextLoads() {
        List<com.multiple.pojo.Test> testList = devMapper.getAllTest();
        for(com.multiple.pojo.Test test : testList){
            localMapper.insertMessage(test.getAa());
        }
    }
}

運(yùn)行測(cè)試代碼,從dev庫(kù)中查出的數(shù)據(jù)可以成功添加至local庫(kù)
該方法也適用需要使用多種不同的數(shù)據(jù)庫(kù)的場(chǎng)景,比如MySQL和Oracle,修改數(shù)據(jù)源配置文件即可

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

相關(guān)文章

  • 深入了解Java核心類庫(kù)--Date,Calendar,DateFormat類

    深入了解Java核心類庫(kù)--Date,Calendar,DateFormat類

    這篇文章主要為大家詳細(xì)介紹了javaDate,Calendar,DateFormat類定義與使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • spring注解在自定義jar包中無法被掃描的解決方案

    spring注解在自定義jar包中無法被掃描的解決方案

    這篇文章主要介紹了spring注解在自定義jar包中無法被掃描的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring MVC 處理Ajax請(qǐng)求的方式詳解

    Spring MVC 處理Ajax請(qǐng)求的方式詳解

    本文介紹了在SpringMVC中處理Ajax請(qǐng)求的方法,主要依賴于Controller和返回類型的配置,使用@RequestMapping注解處理Ajax的控制器方法,本文給大家介紹Spring MVC 處理Ajax請(qǐng)求的方式,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Spring AI實(shí)現(xiàn)智能聊天模型

    Spring AI實(shí)現(xiàn)智能聊天模型

    通過本文的介紹,我們深入了解了Spring AI項(xiàng)目的優(yōu)勢(shì)和特性,以及在實(shí)際應(yīng)用中的快速實(shí)戰(zhàn)示例,Spring AI作為一個(gè)高度抽象化的人工智能應(yīng)用程序開發(fā)框架,為開發(fā)者提供了便捷的模型支持、靈活的功能模塊交換和優(yōu)化能力
    2024-11-11
  • Java制作證書的工具keytool用法詳解

    Java制作證書的工具keytool用法詳解

    本文主要介紹了Java制作證書的工具keytool用法詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringMVC異常處理器編寫及配置

    SpringMVC異常處理器編寫及配置

    這篇文章主要介紹了SpringMVC異常處理器編寫及配置,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 使用logback屏蔽一些包的日志

    使用logback屏蔽一些包的日志

    這篇文章主要介紹了使用logback屏蔽一些包的日志,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)

    java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)

    這篇文章主要介紹了java中字符串轉(zhuǎn)整數(shù)及MyAtoi方法的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • JAVA使用POI(XSSFWORKBOOK)讀取EXCEL文件過程解析

    JAVA使用POI(XSSFWORKBOOK)讀取EXCEL文件過程解析

    這篇文章主要介紹了JAVA使用POI(XSSFWORKBOOK)讀取EXCEL文件過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 一文帶你看懂Java8中的lambda表達(dá)式和方法引用

    一文帶你看懂Java8中的lambda表達(dá)式和方法引用

    Lambda 表達(dá)式是 Java 8 引入的一項(xiàng)重要特性,它提供了一種簡(jiǎn)潔、清晰且靈活的語(yǔ)法來表示可傳遞的匿名函數(shù),下面就跟隨小編一起學(xué)習(xí)一下Java8中的lambda表達(dá)式和方法引用的相關(guān)知識(shí)吧
    2023-12-12

最新評(píng)論

靖宇县| 泽州县| 永新县| 汉川市| 郎溪县| 龙南县| 麦盖提县| 莱阳市| 贡觉县| 望奎县| 广宁县| 新沂市| 台江县| 大安市| 芜湖市| 龙井市| 灵璧县| 永川市| 墨竹工卡县| 侯马市| 昆山市| 吉水县| 东阿县| 福安市| 神农架林区| 南澳县| 万载县| 恭城| 罗平县| 黄梅县| 康平县| 安顺市| 连平县| 阿拉善左旗| 灵丘县| 色达县| 禹州市| 阳新县| 平遥县| 宁化县| 沂南县|