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