精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解鎖無限可能:使用SpringBoot和MyBatis打造動態數據源

數據庫 其他數據庫
今天分享一個 利用SpringBoot和Mybatis實現動態加載數據源的過程,可以達到服務不停機遷移數據源的目的。

今天分享一個利用SpringBoot和Mybatis實現動態加載數據源的過程,可以達到服務不停機遷移數據源的目的,廢話不多說直接上代碼。

首先 你需要在application.properties或application.yml文件中配置一個數據源的連接信息-用于存儲配置信息,類似于以下示例:
# 主數據源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test_test 
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
接下來,創建一個DataSourceDynamicConfig類來配置多個數據源
@Configuration
@ConditionalOnClass(value = {DataSource.class})
public class DataSourceDynamicConfig {

    String DEFAULT = "default";



    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean("defaultDataSource")
    public DataSource setDefault(){
        return DataSourceBuilder.create()
                .type(DruidDataSource.class).build();
    }

    @Bean
    public DynamicDataSource dynamicDataSource(@Qualifier("defaultDataSource") DataSource defaultDataSource) {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put(DEFAULT, defaultDataSource);


        DynamicDataSource dataSource = new DynamicDataSource();
        dataSource.setDataSources(targetDataSources);
        dataSource.setDefaultTargetDataSource(defaultDataSource);
        DataSourceContextHolder.setDataSourceName(DEFAULT);
        return dataSource;
    }


    @Bean
    public SqlSessionFactory sqlSessionFactory(DynamicDataSource dataSource) throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        return factoryBean.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }

}

在上述代碼中,我們使用@ConfigurationProperties注解將不同數據源的配置注入到DataSource實例中。然后,我們創建一個DynamicDataSource實例。我們使用targetDataSources屬性來存儲所有數據源,每個數據源都有一個標識符。defaultTargetDataSource屬性指定默認的數據源。

接下來,我們需要創建一個DynamicDataSource類來實現動態切換數據源。以下是一個簡化的示例:
public class DynamicDataSource extends AbstractRoutingDataSource {

	// 存儲所有數據源
    private static Map<Object, Object> dataSources = new HashMap<>();


    public void setDataSources(Map<Object, Object> sources){
        this.setTargetDataSources(sources);
        dataSources = sources;
    }

	
    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceContextHolder.getDataSourceName();
    }


	// 動態添加數據源
    public static void setDataSource(String key,DataSource dataSource){
        dataSources.putIfAbsent(key,dataSource);
    }

    protected DataSource determineTargetDataSource() {
        String dataSourceName = determineCurrentLookupKey().toString();
        DataSource dataSource = (DataSource) dataSources.get(dataSourceName);
        if (dataSource == null) {
            throw new IllegalStateException("DataSource '" + dataSourceName + "' is not configured");
        }
        return dataSource;
    }

}
//存儲當前線程數據源
public class DataSourceContextHolder {

    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();

    public static void setDataSourceName(String name){
        CONTEXT_HOLDER.set(name);
    }

    public static String getDataSourceName(){
        return CONTEXT_HOLDER.get();
    }

    public static void clearDataSourceName(){
        CONTEXT_HOLDER.remove();
    }

}
添加一個數據實體,用于接收動態數據源。
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DataSourceEntity {

    String url;

    String userName;

    String pwd;

    String driverClassName;
}
接下來構造點模擬數據。

準備數據測試數據表語句。

create database test_test;
CREATE TABLE `t_t` (
  `id` int DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COMMENT='test'

插入兩個數據庫測試數據。

## test_test
INSERT INTO test_test.t_t
(id, name)
VALUES(1, 'test_test');
## full_dev
INSERT INTO test_test.t_t
(id, name)
VALUES(1, 'full_dev');

創建一個查詢TestMapper類。

@Mapper
public interface TestMapper {


    @Select("select * from t_t")
    Map<String,Object> selectMap();
}

創建SpringBoot Main函數。

@SpringBootApplication
@MapperScan(basePackages = {"com.xlc.common.datasource.mapper.test"})
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }
}
最后 單元測試。
@SpringBootTest(classes = Main.class)
@RunWith(SpringRunner.class)
public class TestApp {

    String userName = "root";

    String pwd = "root";

    String url = "jdbc:mysql://192.168.15.130:32691/test_test?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false";

    String driver = "com.mysql.cj.jdbc.Driver";


    @Resource
    TestMapper testMapper;


    @Before
    public void before(){
      DataSource dataSource =  DataSourceBuilder.create()
                .url(url)
                .username(userName)
                .password(pwd)
                .driverClassName(driver)
                .build();
        DynamicDataSource.setDataSource("hhh",dataSource);

    }

    @Test
    public void t2(){
        System.out.println(JSONUtil.toJsonStr(testMapper.selectMap()));
        DataSourceContextHolder.setDataSourceName("hhh");
        System.out.println(JSONUtil.toJsonStr(testMapper.selectMap()));

    }
}

運行結果:

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-01-04 09:33:31

SpringBootMybatis

2023-06-07 08:08:37

MybatisSpringBoot

2024-09-05 15:48:21

2024-10-30 10:22:17

2024-01-10 08:14:10

Java反射工具

2025-01-09 11:21:25

2020-12-31 07:55:33

spring bootMybatis數據庫

2023-09-07 08:39:39

copy屬性數據源

2024-03-18 08:33:16

2025-08-26 01:15:00

Spring項目數據源

2023-12-13 12:20:36

SpringMySQL數據源

2025-10-22 14:35:27

AI模型開源

2014-11-20 09:47:06

Java

2020-06-02 07:55:31

SpringBoot多數據源

2021-03-10 19:01:02

SQL數據源

2024-05-20 00:00:00

2010-12-27 09:59:11

ODBC數據源

2009-06-15 13:24:46

JBoss數據源

2015-12-25 16:37:02

RxJava數據源數據
點贊
收藏

51CTO技術棧公眾號

国产精品久久久爽爽爽麻豆色哟哟| 亚洲日本欧美| 在线成人免费观看| 99热这里只有精品免费| 丝袜+亚洲+另类+欧美+变态| 肉丝袜脚交视频一区二区| 日韩视频一区在线| 丰满岳乱妇一区二区| 蜜桃精品在线| 一区二区三区高清| 日本一区二区三区视频免费看| 亚洲天堂狠狠干| 亚洲午夜在线| 中文字幕国产精品久久| 香蕉视频免费网站| 欧美free嫩15| 亚洲成av人片在www色猫咪| 日韩精品一区二区三区色偷偷| 国产视频一区二区三| 欧美一级播放| 美乳少妇欧美精品| 在线观看国产精品一区| 伊人精品综合| 欧美亚洲高清一区| www.av片| www.在线视频| 国产欧美一区二区精品婷婷 | 日韩免费av一区二区三区| 国产露脸国语对白在线| 久久国产成人| 久久久久久国产精品| 国产人与禽zoz0性伦| 国产精品手机在线播放| 亚洲国产精品久久91精品| 手机免费av片| 99精品国自产在线| 欧美视频二区36p| 四虎精品欧美一区二区免费| av网站在线免费观看| xnxx国产精品| 国内一区二区三区在线视频| 不卡av中文字幕| 国产一区二三区好的| 国产精品扒开腿做爽爽爽视频 | 91国模大尺度私拍在线视频| 国产精品无码人妻一区二区在线| 在线观看免费视频你懂的| 国产精品国产三级国产专播品爱网 | 青青青国产在线| 亚洲国产激情| 久久久久久久久久久免费| 欧美成人精品一区二区免费看片| 国产国产精品| 久久九九亚洲综合| 91香蕉视频网| 亚洲中无吗在线| 久久久国产精彩视频美女艺术照福利| 日韩不卡av在线| 成人高清电影网站| 日韩在线播放av| 成人高潮免费视频| 一区二区三区四区日韩| 久久中文精品视频| 一区二区视频免费看| 亚洲欧洲日韩| 久久久久久久av| 在线观看精品国产| 午夜一区在线| 国产精品久久久久av| 羞羞色院91蜜桃| 久久99久久精品欧美| 91视频国产精品| 亚洲AV午夜精品| 成人ar影院免费观看视频| 精品在线一区| 狠狠狠综合7777久夜色撩人| 国产精品久久久久久久久快鸭| 椎名由奈jux491在线播放| 色网在线观看| 欧美日韩中文字幕综合视频| 不要播放器的av网站| 日本成人在线网站| 日韩欧美一区中文| 日韩www视频| 国产精品美女久久久久久不卡 | 男女在线观看视频| 精品magnet| 色综合天天色综合| 91精品网站在线观看| 亚洲精品一线二线三线无人区| 超碰男人的天堂| 色琪琪久久se色| 欧美极品第一页| 性高潮视频在线观看| 国产乱码精品一区二区三区av| 国产欧美亚洲日本| www免费网站在线观看| 亚洲色图19p| 黄色片视频在线免费观看| 欧美videos粗暴| 精品国产网站在线观看| 制服 丝袜 综合 日韩 欧美| 一本精品一区二区三区| 欧美在线欧美在线| 国产强伦人妻毛片| 久久综合九色综合97婷婷| 中日韩在线视频| 伊人久久综合一区二区| 91精品国产高清一区二区三区蜜臀| 国产性生活毛片| 国产精品久久久久久久免费观看| 91成人福利在线| 国产视频一二三四区| 久久日韩粉嫩一区二区三区| 超碰97免费观看| 在线国产成人影院| 亚洲国产精久久久久久久| 91香蕉视频污在线观看| 欧美专区在线| 国产精品二区二区三区| 好操啊在线观看免费视频| 91九色最新地址| 中文字幕在线播放一区| 欧美在线91| 国产在线拍偷自揄拍精品| 欧美挠脚心网站| 午夜一区二区三区视频| 日批视频在线看| 日韩在线中文| 国产精品欧美一区二区| 神马精品久久| 香港成人在线视频| 无码人妻精品一区二区三| 亚洲在线久久| 91青草视频久久| 欧美一区二区三区| 欧美色图片你懂的| 日本少妇xxxxx| 久久久久一区| 裸体丰满少妇做受久久99精品| 激情影院在线| 欧美mv和日韩mv国产网站| 中文字幕五月天| 激情成人综合网| 亚洲高清资源综合久久精品| 成人在线爆射| 揄拍成人国产精品视频| 欧美超碰在线观看| 久久久久久久久久久黄色| 农村妇女精品一二区| 色综合综合色| 国产精品草莓在线免费观看| 黄色小视频在线观看| 日本国产一区二区| 无码人妻aⅴ一区二区三区69岛| 久久婷婷一区| 欧美综合激情| 四虎影视国产精品| 北条麻妃99精品青青久久| 国产精品人人爽| 亚洲一线二线三线视频| 9.1在线观看免费| 99re国产精品| 欧美下载看逼逼| 国产福利91精品一区二区| 色青青草原桃花久久综合| 一级片视频免费| 亚洲三级久久久| 少妇搡bbbb搡bbb搡打电话| 国自产拍偷拍福利精品免费一| 国产精品毛片va一区二区三区| 爱情岛亚洲播放路线| 日韩成人在线免费观看| 久久久久亚洲视频| 综合网在线视频| 国产国语老龄妇女a片| 美女网站久久| 综合视频免费看| 成人高潮视频| 国产精品91一区| 国产精品刘玥久久一区| 精品第一国产综合精品aⅴ| 亚洲午夜18毛片在线看| 日本一区二区不卡视频| 在线免费黄色小视频| 亚洲精品视频啊美女在线直播| 欧美日韩一区在线播放| 中文成人在线| 97婷婷大伊香蕉精品视频| 国产裸舞福利在线视频合集| 884aa四虎影成人精品一区| 国产大片中文字幕| 国产女同互慰高潮91漫画| 肉色超薄丝袜脚交| 国产精品婷婷| 日本三级福利片| 亚洲精品动态| 亚洲精品欧美日韩专区| 中文字幕 在线观看| 久久久91精品| 人成免费电影一二三区在线观看| 制服.丝袜.亚洲.另类.中文| 亚洲欧美综合另类| 亚洲人成亚洲人成在线观看图片| 国产精品无码一区二区三区免费| 国模娜娜一区二区三区| 情侣黄网站免费看| 午夜国产精品视频| 色999五月色| gogo久久日韩裸体艺术| 国产美女被下药99| 色综合桃花网| 欧美福利视频网站| 在线免费黄色| 亚洲天堂视频在线观看| 蜜桃av中文字幕| 555夜色666亚洲国产免| 天天干天天色综合| 亚洲国产成人av网| 懂色av懂色av粉嫩av| 国产亚洲1区2区3区| 一本色道久久hezyo无码| 激情综合五月婷婷| 国产av人人夜夜澡人人爽| 亚洲乱码视频| 97超碰在线人人| 伊人久久大香线| 在线观看日本一区| 国产欧美日韩免费观看| 国外成人在线视频网站| 麻豆视频久久| 91中文精品字幕在线视频| 日韩在线观看不卡| 国产91久久婷婷一区二区| 福利在线免费视频| 欧美精品激情在线| 青春草在线视频| 精品中文字幕在线观看| 黄色网页在线看| 久久久国产一区二区| 2019中文字幕在线视频| 中日韩午夜理伦电影免费| 久草在现在线| 亚洲视频一区二区三区| 欧洲天堂在线观看| 日韩激情在线视频| 日韩a在线观看| 亚洲毛片在线免费观看| 青青草免费在线| 亚洲图片欧洲图片av| 成人在线免费电影| 日韩在线观看免费网站| 精品美女在线观看视频在线观看| 日韩在线观看免费全| 国产高清一区二区三区视频| 美女av一区二区三区| 欧美6一10sex性hd| 午夜欧美不卡精品aaaaa| 国产欧洲在线| 人九九综合九九宗合| 欧美最新精品| 国产日本欧美视频| 2020国产精品小视频| 亚洲综合日韩在线| 国产成人精品福利| 蜜桃精品久久久久久久免费影院| 九一成人免费视频| 视频一区二区三区在线观看| 婷婷另类小说| 亚洲中文字幕无码一区二区三区| 国产精品观看| 少妇高潮喷水久久久久久久久久| 日日骚欧美日韩| 在线播放av中文字幕| 国产综合一区二区| 性活交片大全免费看| 91亚洲午夜精品久久久久久| www.99热| 亚洲一区影音先锋| 中文字幕激情小说| 欧美日高清视频| 高潮毛片7777777毛片| 亚洲精品一区在线观看香蕉| 午夜免费福利在线观看| 色综合导航网站| 午夜精品成人av| 亚洲专区在线视频| 天堂av一区二区三区在线播放| 亚洲二区自拍| 影音先锋国产精品| 国产高潮免费视频| 丁香激情综合国产| 在线观看天堂av| 亚洲不卡av一区二区三区| www.av88| 精品99久久久久久| 1024国产在线| 午夜精品一区二区三区视频免费看| av免费在线一区| 国产伦精品一区二区三区免费视频| 久久97视频| 屁屁影院ccyy国产第一页| 日韩高清电影一区| 国产高潮视频在线观看| 中文字幕成人av| 男女啊啊啊视频| 欧美一级黄色片| 国产乱视频在线观看| 久久久噜久噜久久综合| av成人亚洲| 免费影院在线观看一区| 国内精品久久久久久久影视蜜臀| 久久久国产欧美| 99久久免费精品高清特色大片| 三级av在线免费观看| 欧美吻胸吃奶大尺度电影| 天堂在线资源8| 九九热这里只有在线精品视| 成人av色网站| 欧美一区二区综合| 亚洲精品影院在线观看| 丰满人妻一区二区三区53视频| 国产精品久久久久影院色老大| 天天操天天摸天天干| 欧美va在线播放| 黄网站免费在线播放| 国产精品久久久久久久久久 | 日韩av网站电影| 日韩精品亚洲人成在线观看| 国产在线拍偷自揄拍精品| 欧美日韩中文一区二区| 欧美老熟妇喷水| av一二三不卡影片| 国产精彩视频在线| 日韩欧美在线1卡| 在线网址91| 亚洲一区二区自拍| 亚洲国产精品综合久久久| 91丨九色丨蝌蚪| 国产精品国产三级国产aⅴ中文 | 91精品国产综合久久香蕉麻豆 | 九九热最新视频//这里只有精品| 九九久久国产| 亚洲一区二区自拍偷拍| 美女爽到高潮91| 国产日韩精品中文字无码| 欧美三片在线视频观看| 91网在线播放| 国产三级精品网站| 我不卡手机影院| 亚洲在线观看网站| 亚洲精品免费在线| 精品国产18久久久久久| 欧美大胆在线视频| 97青娱国产盛宴精品视频| 97在线国产视频| 91免费视频大全| 波多野结衣啪啪| 中文字幕日韩高清| 9999精品视频| 91免费版看片| av电影在线观看一区| 九一国产在线观看| 国产一区二区三区在线观看视频| 日本在线视频一区二区| 中文字幕精品一区日韩| 国产剧情一区在线| 亚洲精品在线观看av| 亚洲精品色婷婷福利天堂| 亚洲www啪成人一区二区| 亚洲人成77777| 国内精品视频666| 欧美成人aaaaⅴ片在线看| 亚洲免费一在线| 91精品国产色综合久久不卡粉嫩| 国产美女永久无遮挡| 久久久一区二区三区| 亚洲天堂网视频| 欧美成人亚洲成人| 亚洲人成网亚洲欧洲无码| 国产九九在线视频| 一区二区在线观看不卡| 四虎影视精品成人| 国产啪精品视频| 亚洲夜间福利| 黄色av免费播放| 日韩一级片网站| 成人欧美magnet| 大桥未久一区二区三区| 91在线云播放| 国产欧美第一页| 日韩av男人的天堂| 一本精品一区二区三区| 久久久久久九九九九九| 3d动漫精品啪啪1区2区免费 | 懂色av一区二区三区| 麻豆传媒在线免费看| 鲁鲁视频www一区二区| 国产精品夜夜嗨| 国产无遮挡又黄又爽又色视频|