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

Springboot結合JDBC實現雙數據源實例

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

配置文件

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

注意:單個數據庫的配置為url,而在多個數據源的時候url可能啟動會報錯,需要使用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("動態(tài)獲取數據源{}",DatasourceUtil.getDB());
        return DatasourceUtil.getDB();
    }
}

創(chuàng)建controller測試

@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的任務表
        AssessmentTaskEntity assessmentTaskEntity = assessmentTaskMapper.selectById("1");
        DatasourceUtil.clearDB();
        User user = userMapper.selectById("1");
        System.out.println("user = " + user);
        return assessmentTaskEntity;
    }

以上就是Springboot結合JDBC實現雙數據源實例的詳細內容,更多關于Springboot JDBC雙數據源的資料請關注腳本之家其它相關文章!

相關文章

  • 如何讓Win10實現Java文件的開機自啟動

    如何讓Win10實現Java文件的開機自啟動

    這篇文章主要介紹了如何讓Win10實現Java文件的開機自啟動,對于一些想要一直運行的Java文件,就會造成每次系統(tǒng)更新之后的重啟導致Java文件無法繼續(xù)運行。,需要的朋友可以參考下
    2019-06-06
  • mybatis攔截器實現通用權限字段添加的方法

    mybatis攔截器實現通用權限字段添加的方法

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

    Java拆裝箱深度剖析

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

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

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

    java8 stream 如何打印數據元素

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

    idea 設置鼠標懸停(放上)彈出注釋的方法

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

    JDBC獲取數據庫連接由淺入深

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

    idea中如何集成http請求

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

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

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

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

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

最新評論

乡城县| 阜康市| 广宁县| 台江县| 六盘水市| 武穴市| 贵定县| 汝阳县| 海宁市| 永靖县| 武宁县| 清涧县| 桓台县| 青州市| 鹤岗市| 泰安市| 西乌珠穆沁旗| 建宁县| 久治县| 航空| 东乡族自治县| 山阳县| 长寿区| 尤溪县| 惠水县| 乌鲁木齐市| 鲁山县| 科技| 中江县| 资阳市| 无极县| 浮山县| 宜兰市| 邹平县| 英超| 临夏县| 芦溪县| 容城县| 南汇区| 济源市| 庆云县|