From 9d0c475742be897210b697858ce603af6833ac10 Mon Sep 17 00:00:00 2001
From: linbangquan <1437892690@qq.com>
Date: Thu, 9 Nov 2023 17:55:12 +0800
Subject: [PATCH 1/2] =?UTF-8?q?[=E5=8A=9F=E8=83=BD]=20=E6=94=AF=E6=8C=81?=
=?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=BF=9E=E6=8E=A5=E6=95=B0=E6=8D=AE=E5=BA=93?=
=?UTF-8?q?=E7=9A=84=E5=8E=82=E5=95=86=E4=B8=8D=E5=90=8C=EF=BC=8C=E5=8A=A0?=
=?UTF-8?q?=E8=BD=BD=E4=B8=8D=E5=90=8Csql=E8=AF=AD=E5=8F=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
关联 #[1020998336348160]支持根据连接数据库的厂商不同,加载不同sql语句 http://192.168.0.96:8090/demo/rdm.html#/story-detail/939050947543040/939050947543042/1020998336348160
---
src/main/java/META-INF/root-context.xml | 12 +++
.../plugin/NeatLogicDatabaseIdProvider.java | 99 +++++++++++++++++++
.../framework/framework-servlet-context.xml | 1 +
3 files changed, 112 insertions(+)
create mode 100644 src/main/java/neatlogic/framework/dao/plugin/NeatLogicDatabaseIdProvider.java
diff --git a/src/main/java/META-INF/root-context.xml b/src/main/java/META-INF/root-context.xml
index 03972a228..60f38ce9a 100644
--- a/src/main/java/META-INF/root-context.xml
+++ b/src/main/java/META-INF/root-context.xml
@@ -99,6 +99,17 @@
+
+
+
+
+ mysql
+ oceanbase
+ tidb
+
+
+
+
@@ -108,6 +119,7 @@
classpath*:neatlogic/framework/**/mapper/*.xml
+
diff --git a/src/main/java/neatlogic/framework/dao/plugin/NeatLogicDatabaseIdProvider.java b/src/main/java/neatlogic/framework/dao/plugin/NeatLogicDatabaseIdProvider.java
new file mode 100644
index 000000000..e37f804f9
--- /dev/null
+++ b/src/main/java/neatlogic/framework/dao/plugin/NeatLogicDatabaseIdProvider.java
@@ -0,0 +1,99 @@
+package neatlogic.framework.dao.plugin;
+
+import org.apache.ibatis.logging.Log;
+import org.apache.ibatis.logging.LogFactory;
+import org.apache.ibatis.mapping.DatabaseIdProvider;
+
+import javax.sql.DataSource;
+import java.sql.*;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+
+public class NeatLogicDatabaseIdProvider implements DatabaseIdProvider {
+
+ private final String MYSQL = "MySQL";
+ private final String TIDB = "TiDB";
+ private final String OCEAN_BASE = "OceanBase";
+
+ private String databaseId;
+ private Properties properties;
+
+ public NeatLogicDatabaseIdProvider() {
+
+ }
+ @Override
+ public void setProperties(Properties p) {
+ this.properties = p;
+ }
+
+ @Override
+ public String getDatabaseId(DataSource dataSource) throws SQLException {
+ if (databaseId != null) {
+ return databaseId;
+ }
+ if (dataSource == null) {
+ throw new NullPointerException("dataSource cannot be null");
+ }
+ try {
+ databaseId = getDatabaseName(dataSource);
+ System.out.println("databaseId = " + databaseId);
+ } catch (Exception e) {
+ LogHolder.log.error("Could not get a databaseId from dataSource", e);
+ }
+ return databaseId;
+ }
+
+ private String getDatabaseName(DataSource dataSource) throws SQLException {
+ String productName = getDatabaseProductName(dataSource);
+ System.out.println("productName = " + productName);
+ if (this.properties != null) {
+ for (Map.Entry