From fcf8516f0d9c50237ab3ebb47a6ae17f639ce3ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Wed, 31 Jul 2024 09:48:05 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20=E9=80=82?= =?UTF-8?q?=E9=85=8D=20anyline=20=E6=96=B0=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/MyBatisDataSourceMonitor.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java index bb0760621..8c0f352fa 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java @@ -4,6 +4,7 @@ import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import lombok.extern.slf4j.Slf4j; import org.anyline.data.datasource.DataSourceMonitor; +import org.anyline.data.runtime.DataRuntime; import org.anyline.util.ConfigTable; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceUtils; @@ -41,7 +42,7 @@ public class MyBatisDataSourceMonitor implements DataSourceMonitor { * @return String 返回null由上层自动提取 */ @Override - public String feature(Object datasource) { + public String feature(DataRuntime runtime, Object datasource) { String feature = null; if (datasource instanceof JdbcTemplate jdbc) { DataSource ds = jdbc.getDataSource(); @@ -69,6 +70,22 @@ public class MyBatisDataSourceMonitor implements DataSourceMonitor { return feature; } + /** + * 数据源唯一标识 如果不实现则默认feature + * @param datasource 数据源 + * @return String 返回null由上层自动提取 + */ + @Override + public String key(DataRuntime runtime, Object datasource) { + if(datasource instanceof JdbcTemplate jdbc){ + DataSource ds = jdbc.getDataSource(); + if(ds instanceof DynamicRoutingDataSource){ + return DynamicDataSourceContextHolder.peek(); + } + } + return runtime.getKey(); + } + /** * ConfigTable.KEEP_ADAPTER=2 : 根据当前接口判断是否保持同一个数据源绑定同一个adapter
* DynamicRoutingDataSource类型的返回false,因为同一个DynamicRoutingDataSource可能对应多类数据库, 如果项目中只有一种数据库 应该直接返回true @@ -77,7 +94,7 @@ public class MyBatisDataSourceMonitor implements DataSourceMonitor { * @return boolean */ @Override - public boolean keepAdapter(Object datasource) { + public boolean keepAdapter(DataRuntime runtime, Object datasource) { if (datasource instanceof JdbcTemplate jdbc) { DataSource ds = jdbc.getDataSource(); return !(ds instanceof DynamicRoutingDataSource);