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

Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例

 更新時(shí)間:2023年12月10日 11:37:38   作者:慈祥的茶壺  
這篇文章主要為大家介紹了Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

配置文件

spring:
  application:
    name: tuberculosis
  datasource:
    tuberculosis:
      driver-class-name: com.mysql.jdbc.Driver
      jdbc-url: jdbc:mysql://127.0.0.1:3306/tuberculosis?useUnicode=true&characterEncoding=utf8&useSSL=false
      username: root
      password: root
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        minimum-idle: 5
        maximum-pool-size: 100
        auto-commit: true
        idle-timeout: 30000
        pool-name: DatabookHikariCP
        max-lifetime: 1800000
        connection-timeout: 30000
        connection-test-query: SELECT 1
    jkjc:
      driver-class-name: com.mysql.jdbc.Driver
      jdbc-url: jdbc:mysql://127.0.0.1:3306/jkjc?useUnicode=true&characterEncoding=utf8&useSSL=false
      username: root
      password: root
      type: com.zaxxer.hikari.HikariDataSource
      hikari:
        minimum-idle: 5
        maximum-pool-size: 100
        auto-commit: true
        idle-timeout: 30000
        pool-name: DatabookHikariCP
        max-lifetime: 1800000
        connection-timeout: 30000
        connection-test-query: SELECT 1

注意:?jiǎn)蝹€(gè)數(shù)據(jù)庫(kù)的配置為url,而在多個(gè)數(shù)據(jù)源的時(shí)候url可能啟動(dòng)會(huì)報(bào)錯(cuò),需要使用jdbc-url

配置類

package com.daryl.config.db;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.util.HashMap;
/**
 * @author daryl
 * @create 2023/12/08
 */
@Component
public class DataSourceConfig {
    @Bean(name = "tuberculosis")
    @ConfigurationProperties(prefix = "spring.datasource.tuberculosis")
    public DataSource dataSourceOne() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = "jkjc")
    @ConfigurationProperties(prefix = "spring.datasource.jkjc")
    public DataSource dataSourceTwo() {
        return DataSourceBuilder.create().build();
    }
    @Bean("dynamicDatasource")
    @Primary
    public DataSource dynamicDataSource(@Qualifier("tuberculosis") DataSource tuberculosis,@Qualifier("jkjc") DataSource jkjc) {
        DynamicDatasource dynamicDatasource = new DynamicDatasource();
        dynamicDatasource.setDefaultTargetDataSource(tuberculosis);
        HashMap<Object, Object> dsMap = new HashMap<>();
        dsMap.put("tuberculosis", tuberculosis);
        dsMap.put("jkjc", jkjc);
        dynamicDatasource.setTargetDataSources(dsMap);
        return dynamicDatasource;
    }
    @Bean
    public PlatformTransactionManager transactionManager(@Qualifier("dynamicDatasource") DataSource dynamicDatasource) {
        return new DataSourceTransactionManager(dynamicDatasource);
    }
}
package com.daryl.config.db;
/**
 * @author daryl
 * @create 2023/12/08
 */
public class DatasourceUtil {
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
    public static void setDB(String dbType) {
        contextHolder.set(dbType);
    }
    public static String getDB() {
        return contextHolder.get();
    }
    public static void clearDB() {
        contextHolder.remove();
    }
}
package com.daryl.config.db;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
 * @author daryl
 * @create 2023/12/08
 */
public class DynamicDatasource extends AbstractRoutingDataSource {
    private static final Logger LOGGER = LoggerFactory.getLogger(DynamicDatasource.class);
    @Override
    protected Object determineCurrentLookupKey() {
        LOGGER.debug("動(dòng)態(tài)獲取數(shù)據(jù)源{}",DatasourceUtil.getDB());
        return DatasourceUtil.getDB();
    }
}

創(chuàng)建controller測(cè)試

@RequestMapping("/db1")
    public Object db1(@RequestBody HashMap<String, String> map) {
        //db1的用戶表
        return userMapper.selectById(map.get("id"));
    }
@RequestMapping("/db2")
    public Object db2() {
        DatasourceUtil.setDB("jkjc");
        //db2的任務(wù)表
        AssessmentTaskEntity assessmentTaskEntity = assessmentTaskMapper.selectById("1");
        DatasourceUtil.clearDB();
        User user = userMapper.selectById("1");
        System.out.println("user = " + user);
        return assessmentTaskEntity;
    }

以上就是Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于Springboot JDBC雙數(shù)據(jù)源的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 如何讓W(xué)in10實(shí)現(xiàn)Java文件的開機(jī)自啟動(dòng)

    如何讓W(xué)in10實(shí)現(xiàn)Java文件的開機(jī)自啟動(dòng)

    這篇文章主要介紹了如何讓W(xué)in10實(shí)現(xiàn)Java文件的開機(jī)自啟動(dòng),對(duì)于一些想要一直運(yùn)行的Java文件,就會(huì)造成每次系統(tǒng)更新之后的重啟導(dǎo)致Java文件無法繼續(xù)運(yùn)行。,需要的朋友可以參考下
    2019-06-06
  • mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的方法

    mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的方法

    這篇文章主要給大家介紹了關(guān)于mybatis攔截器實(shí)現(xiàn)通用權(quán)限字段添加的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java拆裝箱深度剖析

    Java拆裝箱深度剖析

    這篇文章主要為大家深度剖析了Java拆箱裝箱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Netty實(shí)戰(zhàn)入門教程之?什么是Netty

    Netty實(shí)戰(zhàn)入門教程之?什么是Netty

    Java中支持三種網(wǎng)絡(luò)編程IO模型,BIO、NIO、AIO,Netty對(duì)NIO又做了一層封裝,本文帶領(lǐng)我們了解Netty到底是什么,Netty入門案例,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • java8 stream 如何打印數(shù)據(jù)元素

    java8 stream 如何打印數(shù)據(jù)元素

    這篇文章主要介紹了java8 stream 如何打印數(shù)據(jù)元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • idea 設(shè)置鼠標(biāo)懸停(放上)彈出注釋的方法

    idea 設(shè)置鼠標(biāo)懸停(放上)彈出注釋的方法

    這篇文章主要介紹了idea 設(shè)置鼠標(biāo)懸停(放上)彈出注釋的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深

    JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深

    大家好,本篇文章主要講的是JDBC獲取數(shù)據(jù)庫(kù)連接由淺入深,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • idea中如何集成http請(qǐng)求

    idea中如何集成http請(qǐng)求

    這篇文章主要介紹了idea中如何集成http請(qǐng)求問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Java 序列化和Java反射的底層原理及區(qū)別對(duì)比分析

    Java 序列化和Java反射的底層原理及區(qū)別對(duì)比分析

    Java 序列化和反射是 Java 中兩個(gè)不同維度的機(jī)制,序列化聚焦對(duì)象的持久化與傳輸,反射聚焦類 / 對(duì)象的動(dòng)態(tài)訪問與操作,二者底層原理和應(yīng)用場(chǎng)景差異顯著,以下從底層原理、核心特性、區(qū)別對(duì)比展開解析,本文介紹Java 序列化和Java反射的底層原理及區(qū)別,感興趣的朋友一起看看吧
    2025-12-12
  • springboot如何獲取相對(duì)路徑文件夾下靜態(tài)資源的方法

    springboot如何獲取相對(duì)路徑文件夾下靜態(tài)資源的方法

    這篇文章主要介紹了springboot如何獲取相對(duì)路徑文件夾下靜態(tài)資源的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05

最新評(píng)論

澄迈县| 简阳市| 观塘区| 东台市| 芜湖市| 工布江达县| 东明县| 永城市| 阳新县| 普兰县| 德兴市| 沾益县| 永安市| 凤冈县| 罗平县| 沅陵县| 徐汇区| 论坛| 封丘县| 农安县| 五台县| 阳高县| 永吉县| 方山县| 桓仁| 德州市| 万宁市| 偏关县| 楚雄市| 永宁县| 象州县| 临泽县| 通州市| 青海省| 堆龙德庆县| 独山县| 信阳市| 敦化市| 司法| 沽源县| 孙吴县|