From 86acb14f0553060171a5bfaede43fde5375d8906 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期六, 27 七月 2024 15:09:33 +0800
Subject: [PATCH] update anyline 8.7.2-20240726

---
 ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java     |    2 
 ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java |   81 ++++++++++++++++++++++++++++++++++++++++
 pom.xml                                                                                                |    2 
 3 files changed, 83 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index b8796d7..8c1e35a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
         <!-- 闄愬埗妗嗘灦涓殑fastjson鐗堟湰 -->
         <fastjson.version>1.2.83</fastjson.version>
         <!-- 闈㈠悜杩愯鏃剁殑D-ORM渚濊禆 -->
-        <anyline.version>8.7.2-20240722</anyline.version>
+        <anyline.version>8.7.2-20240726</anyline.version>
         <!--宸ヤ綔娴侀厤缃�-->
         <flowable.version>7.0.1</flowable.version>
 
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
new file mode 100644
index 0000000..906733b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java
@@ -0,0 +1,81 @@
+package org.dromara.generator.config;
+
+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.util.ConfigTable;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.DataSourceUtils;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class MyBatisDataSourceMonitor implements DataSourceMonitor {
+
+    public MyBatisDataSourceMonitor() {
+        // 璋冩暣鎵ц妯″紡涓鸿嚜瀹氫箟
+        ConfigTable.KEEP_ADAPTER = 2;
+    }
+
+    private final Map<String, String> features = new HashMap<>();
+
+    /**
+     * 鏁版嵁婧愮壒寰� 鐢ㄦ潵瀹氬噯 adapter 鍖呭惈鏁版嵁搴撴垨JDBC鍗忚鍏抽敭瀛�<br/>
+     * 涓�鑸細閫氳繃 浜у搧鍚峗url 鍚堟垚 濡傛灉杩斿洖null 涓婂眰鏂规硶浼氶�氳繃driver_浜у搧鍚峗url鍚堟垚
+     *
+     * @param datasource 鏁版嵁婧�
+     * @return String 杩斿洖null鐢变笂灞傝嚜鍔ㄦ彁鍙�
+     */
+    @Override
+    public String feature(Object datasource) {
+        String feature = null;
+        if (datasource instanceof JdbcTemplate jdbc) {
+            DataSource ds = jdbc.getDataSource();
+            if (ds instanceof DynamicRoutingDataSource) {
+                String key = DynamicDataSourceContextHolder.peek();
+                feature = features.get(key);
+                if (null == feature) {
+                    Connection con = null;
+                    try {
+                        con = DataSourceUtils.getConnection(ds);
+                        DatabaseMetaData meta = con.getMetaData();
+                        String url = meta.getURL();
+                        feature = meta.getDatabaseProductName().toLowerCase().replace(" ", "") + "_" + url;
+                        features.put(key, feature);
+                    } catch (Exception e) {
+                        log.error(e.getMessage(), e);
+                    } finally {
+                        if (null != con && !DataSourceUtils.isConnectionTransactional(con, ds)) {
+                            DataSourceUtils.releaseConnection(con, ds);
+                        }
+                    }
+                }
+            }
+        }
+        return feature;
+    }
+
+    /**
+     * ConfigTable.KEEP_ADAPTER=2 : 鏍规嵁褰撳墠鎺ュ彛鍒ゆ柇鏄惁淇濇寔鍚屼竴涓暟鎹簮缁戝畾鍚屼竴涓猘dapter<br/>
+     * DynamicRoutingDataSource绫诲瀷鐨勮繑鍥瀎alse,鍥犱负鍚屼竴涓狣ynamicRoutingDataSource鍙兘瀵瑰簲澶氱被鏁版嵁搴�, 濡傛灉椤圭洰涓彧鏈変竴绉嶆暟鎹簱 搴旇鐩存帴杩斿洖true
+     *
+     * @param datasource 鏁版嵁婧�
+     * @return boolean
+     */
+    @Override
+    public boolean keepAdapter(Object datasource) {
+        if (datasource instanceof JdbcTemplate jdbc) {
+            DataSource ds = jdbc.getDataSource();
+            return !(ds instanceof DynamicRoutingDataSource);
+        }
+        return true;
+    }
+
+}
diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
index 4d16f71..23eb889 100644
--- a/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
+++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java
@@ -186,7 +186,7 @@
     @Override
     public List<GenTable> selectDbTableListByNames(String[] tableNames, String dataName) {
         Set<String> tableNameSet = new HashSet<>(List.of(tableNames));
-        LinkedHashMap<String, Table<?>> tablesMap = ServiceProxy.service(dataName).metadata().tables();
+        LinkedHashMap<String, Table<?>> tablesMap = ServiceProxy.metadata().tables();
 
         if (CollUtil.isEmpty(tablesMap)) {
             return new ArrayList<>();

--
Gitblit v1.9.3