From eca1c2ce8506dfd5ad8f94235382b666ea831dfd Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期六, 08 二月 2025 17:58:19 +0800 Subject: [PATCH] 动态切换数据库实现 --- ltkj-hosp/src/main/java/com/ltkj/db/HospDynamicDataSource.java | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ltkj-hosp/src/main/java/com/ltkj/db/HospDynamicDataSource.java b/ltkj-hosp/src/main/java/com/ltkj/db/HospDynamicDataSource.java index 06267f4..f615185 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/db/HospDynamicDataSource.java +++ b/ltkj-hosp/src/main/java/com/ltkj/db/HospDynamicDataSource.java @@ -1,24 +1,30 @@ package com.ltkj.db; +import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; import javax.sql.DataSource; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +@Slf4j public class HospDynamicDataSource extends AbstractRoutingDataSource { private final Map<Object, Object> targetDataSources = new ConcurrentHashMap<>(); // 瀛樺偍鎵�鏈夋暟鎹簮 @Override protected Object determineCurrentLookupKey() { - return DataSourceContextHolder.getDataSourceKey(); // 鏍规嵁涓婁笅鏂囪幏鍙栧綋鍓嶆暟鎹簮鐨勯敭 + String key = DataSourceContextHolder.getDataSourceKey(); + log.info("褰撳墠鏁版嵁婧� ->{}",key); + return key; // 鏍规嵁涓婁笅鏂囪幏鍙栧綋鍓嶆暟鎹簮鐨勯敭 } // 娣诲姞鐩爣鏁版嵁婧� public void addTargetDataSource(String key, DataSource dataSource) { - targetDataSources.put(key, dataSource); - super.setTargetDataSources(new ConcurrentHashMap<>(targetDataSources)); // 鏇存柊鐩爣鏁版嵁婧� - super.afterPropertiesSet(); // 閲嶆柊鍒濆鍖栨暟鎹簮 + if (dataSource != null) { + targetDataSources.put(key, dataSource); + super.setTargetDataSources(new ConcurrentHashMap<>(targetDataSources)); // 鏇存柊鐩爣鏁版嵁婧� + super.afterPropertiesSet(); // 閲嶆柊鍒濆鍖栨暟鎹簮 + } } // 鍏佽澶栭儴璁块棶鎵�鏈夌洰鏍囨暟鎹簮 -- Gitblit v1.8.0