精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

26uuu国产精品视频| 欧美久久综合网| 国产在线不卡一卡二卡三卡四卡| 日韩一区和二区| 91.com在线| 欧美国产成人精品一区二区三区| 欧美女优在线视频| 岛国视频午夜一区免费在线观看| 久久偷看各类wc女厕嘘嘘偷窃| 国产suv一区二区三区| 国产精品一区二区精品| 亚洲综合色噜噜狠狠| 九九九九久久久久| 一区二区视频播放| 亚洲一级淫片| 日韩电影在线观看中文字幕| 性欧美videossex精品| 国产美女av在线| 国产精品一区二区视频| 51午夜精品视频| 少妇视频一区二区| 欧美激情99| 欧美日韩一区二区三区四区五区| 丁香色欲久久久久久综合网| 国产在线黄色| 国产精品资源在线看| 青青草精品毛片| 加勒比综合在线| 一区二区三区自拍视频| 在线一区二区三区做爰视频网站| www.国产二区| 日本亚洲精品| 久久久久久影视| 99精品99久久久久久宅男| 国产成人在线免费观看视频| 国产精品国产三级国产在线观看| 日韩精品在线私人| 黑人巨大猛交丰满少妇| 国产原创一区| 亚洲高清一区二区三区| 91制片厂免费观看| 神马电影在线观看| 国产91精品欧美| 国产美女久久久| 无码人妻丰满熟妇精品| 一区二区三区福利| 久久精品91久久香蕉加勒比| 亚洲最大成人网站| 欧美人妖在线观看| 欧美高清视频一二三区| 欧美黄色性生活| 亚洲免费福利| 亚洲精品国产高清久久伦理二区| 亚洲欧美日韩精品在线| 黄色av网站在线| 成人激情小说乱人伦| 91久久国产精品91久久性色| 在线免费观看视频网站| 人人狠狠综合久久亚洲| 国产福利精品视频| 国产男人搡女人免费视频| 在线亚洲欧美| 欧美性受xxxx白人性爽| 日韩 国产 在线| 亚洲人成久久| 97精品久久久中文字幕免费| 日本三级2019| 一区二区动漫| 欧美中文在线观看国产| 九九热在线免费观看| 亚洲免费网站| 午夜精品久久久久久久久久久久久| www青青草原| 欧美欧美全黄| 性视频1819p久久| av资源免费观看| 美女黄网久久| 国产精品视频26uuu| 一级片一区二区三区| 精品一二三四在线| 99国产超薄肉色丝袜交足的后果| 亚洲AV无码成人片在线观看| 成人一区二区三区在线观看| 国产乱码精品一区二区三区中文 | 欧美激情中文字幕乱码免费| 老熟妇高潮一区二区三区| 成人高清av| 亚洲日本欧美中文幕| 青青操在线播放| 牛牛国产精品| 欧美精品久久久久久久久| 四虎地址8848| 欧美激情91| 国产91成人在在线播放| 久久精品五月天| 另类综合日韩欧美亚洲| 国产久一道中文一区| 国产在线你懂得| 国产精品久久久久aaaa樱花| 自拍偷拍一区二区三区| av在线视屏| 欧美视频一区二区三区四区 | 国产河南妇女毛片精品久久久| 国产精品香蕉视屏| av在线免费一区| 亚洲综合成人在线视频| 日日碰狠狠丁香久燥| 中文另类视频| 欧美视频中文字幕| gogo亚洲国模私拍人体| 国产尤物久久久| 久久99久久99精品中文字幕 | 亚洲aaaaaa| 日本精品专区| 一区二区三区 在线观看视频| 97成人在线免费视频| 黄色成人在线观看网站| 亚洲国产天堂久久综合| 国产美女高潮视频| 久久久久.com| 国产厕所精品在线观看| 9191在线| 一本色道亚洲精品aⅴ| 日韩不卡的av| 大片网站久久| 2020久久国产精品| 97超碰资源站| 日本一区二区综合亚洲| www污在线观看| 亚洲欧洲日韩精品在线| 日韩经典一区二区三区| 人人爽人人爽人人片| 一区二区动漫| 国产区一区二区三区| 五月天婷婷在线视频| 色哟哟国产精品| jlzzjizz在线播放观看| 91精品国产乱码久久久久久久| 国产成人av在线播放| 天天av天天翘| 亚洲高清在线视频| 亚洲婷婷在线观看| 欧美国产综合| 亚洲精品欧美一区二区三区| 日本成人网址| 欧美日韩激情网| 国产吃瓜黑料一区二区| 欧美精品自拍| 99re在线观看| 欧美理论片在线播放| 欧美蜜桃一区二区三区| 亚洲人人夜夜澡人人爽| 在线观看一区视频| 91麻豆蜜桃| av小次郎在线| 日韩午夜电影av| 永久免费看片直接| 国产一区二区三区在线观看精品 | 黄色一区二区三区四区| 91精品中文在线| 国产免费a∨片在线观看不卡| 色琪琪一区二区三区亚洲区| 色天使在线视频| 性一交一乱一区二区洋洋av| 乱色588欧美| 欧美韩日亚洲| 亚洲国产小视频在线观看| 久久久久黄色片| 成人激情综合网站| 欧美精品一区免费| 国产精品自在| 亚州成人av在线| 清纯唯美亚洲色图| 欧美三级日韩在线| 亚洲综合第一区| 国产精品综合视频| 成人性生活视频免费看| 亚洲精品国产精品粉嫩| 国产精品久久一区主播| 亚洲日本香蕉视频| 欧美一a一片一级一片| www.av免费| 成人久久18免费网站麻豆| 欧美 日韩 国产一区| 私拍精品福利视频在线一区| 国产精品美女久久久久久免费 | 欧美激情视频网站| 婷婷国产在线| 日韩欧美亚洲一二三区| 天天操天天摸天天舔| 国产91综合一区在线观看| 欧洲黄色一级视频| 99re66热这里只有精品8| 国产精品久久亚洲7777| 九色成人搞黄网站| 精品中文字幕在线2019| 国产主播福利在线| 日韩视频在线观看一区二区| 久久久久久激情| 波多野结衣中文字幕一区 | 中文字幕 在线观看| 色爱av美腿丝袜综合粉嫩av| 国产精品久久久久久无人区| 亚洲精品菠萝久久久久久久| av女人的天堂| 丁香五精品蜜臀久久久久99网站 | 伊人天天综合| 成人h在线播放| 国产69精品久久久久按摩| 欧美人与物videos| 成年人在线观看| 91精品国产aⅴ一区二区| 国产大片中文字幕在线观看| 国产精品乱人伦| 无码国产69精品久久久久网站| 日韩极品在线观看| 国产h视频在线播放| 91精品一区国产高清在线gif| 91香蕉视频在线下载| 日产精品一区| 欧美激情精品久久久久久久变态| 女人天堂在线| 亚洲精品一区二区三区影院| 国产美女明星三级做爰| 欧美视频中文字幕在线| 精品无码一区二区三区电影桃花 | 欧美亚洲视频| 日本福利视频网站| 91精品国产91久久久久久密臀| 日本精品一区二区三区高清 久久| 国产精品一区免费在线| 国产精品美女午夜av| 手机看片久久| 4438全国成人免费| 超碰99在线| 欧美国产精品人人做人人爱| 久久bbxx| 色yeye香蕉凹凸一区二区av| 国产一二三在线观看| 日韩精品免费在线播放| 国产成人免费看一级大黄| 欧美视频在线一区二区三区 | 日韩午夜高潮| 欧美午夜小视频| 欧美+日本+国产+在线a∨观看| 在线观看成人av电影| 日韩精品永久网址| 色涩成人影视在线播放| 成人激情免费视频| 亚洲电影网站| 成人在线免费观看视频| 一本久道久久综合狠狠爱亚洲精品| 国产一区二区区别| 色99中文字幕| 不卡中文字幕| 亚洲精品乱码久久久久久蜜桃91| 欧美限制电影| 亚洲一区美女| 欧美三级美国一级| 日本精品二区| 日韩超碰人人爽人人做人人添| caoporen国产精品| 久久久久观看| 国产一区二区在线网站| 欧美理论电影在线精品| 欧美中日韩一区二区三区| 国产一区二区精品福利地址| 一区二区精品视频| 在线国产一区二区| 人妻少妇精品无码专区二区 | 欧美日韩亚洲一二三| 久久在线精品| 超碰成人在线播放| 免费人成精品欧美精品| 亚洲精品一二三四五区| 久久99精品久久久久久| 欧美国产在线一区| 91亚洲精品一区二区乱码| 午夜时刻免费入口| 最近中文字幕一区二区三区| 精品视频在线观看免费| 91黄视频在线| 99久久精品国产一区二区成人| 91麻豆精品国产91久久久使用方法 | 久久精品一卡二卡| 国产精品1024久久| 黄色工厂在线观看| 亚洲欧洲日韩女同| 亚洲天堂日韩av| 欧美日韩另类国产亚洲欧美一级| 国产av无码专区亚洲av| 日韩国产一区三区| av网站大全在线观看| 欧美激情手机在线视频 | 国产精品久久久久久久久久三级| 精品美女一区| 国产精品成人一区二区三区| 欧美日韩爱爱| 国产传媒久久久| 肉肉av福利一精品导航| 亚洲丝袜在线观看| 久久精品男人天堂av| 蜜桃av免费观看| 精品二区三区线观看| 日本特级黄色片| 91精品国产综合久久精品麻豆 | 99热99精品| 自拍偷拍第9页| 欧美日韩一区二区在线播放| 国产偷拍一区二区| 亚洲福利视频网| 欧美日韩欧美| 2019国产精品自在线拍国产不卡| 亚州一区二区三区| 99热99热| 日韩大片在线| 青青青在线视频播放| 精品一区二区三区视频| 国产男男chinese网站| 亚洲精品视频自拍| 成年人视频免费| 日韩精品高清视频| 色呦呦在线免费观看| 国产精品久久视频| 国产不卡一二三区| 欧美极品欧美精品欧美| 国产精品99久久久久久久vr| 貂蝉被到爽流白浆在线观看| 亚洲成年人影院| 国产精品久久久久久久成人午夜| 亚洲欧洲一区二区三区久久| 国产精品25p| 91在线精品播放| 久久久久久久久久久9不雅视频| 男女无套免费视频网站动漫| 91丨九色丨尤物| 西西44rtwww国产精品| 精品免费日韩av| 日本不卡影院| 91精品综合久久久久久五月天| 999久久久亚洲| 国产探花在线看| 国产日产欧产精品推荐色 | 欧美日韩精品一区二区三区四区| 日本毛片在线观看| 久久久亚洲影院| 凹凸av导航大全精品| 樱空桃在线播放| 久久99久国产精品黄毛片色诱| 久久精品—区二区三区舞蹈| 一本大道久久a久久综合| 天天综合在线视频| 91超碰caoporn97人人| 希岛爱理av免费一区二区| 国产91在线视频观看| 91尤物视频在线观看| 黄色污污视频软件| 在线亚洲男人天堂| 亚洲男人在线| 日本a级片在线播放| k8久久久一区二区三区| 国产三级av片| 亚洲人成电影网站| 成人全视频免费观看在线看| 宅男在线精品国产免费观看| 国产主播一区二区三区| 欧美成人精品欧美一级| 精品美女一区二区三区| 忘忧草在线日韩www影院| 韩国成人av| 久久精品伊人| 情侣偷拍对白清晰饥渴难耐| 日韩亚洲电影在线| 日韩电影毛片| 亚洲精品无人区| 极品少妇xxxx精品少妇偷拍| 久久精品www| 亚洲美女自拍视频| 欧美激情不卡| 欧美人成在线观看| 精品一区二区国语对白| 日韩av黄色片| 亚洲欧美在线免费| 日本综合视频| 欧美精品一区二区性色a+v| 成人丝袜视频网| 黄色一级片在线免费观看| 日韩精品视频在线播放| 欧美黄色成人| 青青青国产在线观看| 国产人久久人人人人爽| 国内老熟妇对白hdxxxx| 欧美做受高潮1| 91精品蜜臀一区二区三区在线| 无码国产精品一区二区高潮| 午夜精品久久久久久久久久| av播放在线观看| 国产日韩欧美亚洲一区| 久久国产精品露脸对白| av大片免费在线观看|