diff --git a/pom.xml b/pom.xml
index 023059b5..e2065e56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -404,7 +404,11 @@
-
+
+ com.dameng
+ DmJdbcDriver18
+ 8.1.3.140
+
diff --git a/src/main/java/com/glxp/api/config/HdSchemaExecutor.java b/src/main/java/com/glxp/api/config/HdSchemaExecutor.java
index 061da469..11fae92f 100644
--- a/src/main/java/com/glxp/api/config/HdSchemaExecutor.java
+++ b/src/main/java/com/glxp/api/config/HdSchemaExecutor.java
@@ -1,83 +1,83 @@
-package com.glxp.api.config;
-
-import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.lang.UUID;
-import com.glxp.api.dao.system.DbVersionDao;
-import com.glxp.api.entity.system.DbVersionEntity;
-import com.glxp.api.entity.system.SchemaData;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import javax.annotation.Resource;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-@Order(1)
-@Component
-@Slf4j
-public class HdSchemaExecutor implements ApplicationRunner {
-
- @Resource
- DbVersionDao hdCommonDao;
-
- private List schema = new ArrayList<>();
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- //初始版本列表
- buildSchemas();
- //定义sql文件路径
- String basePath = "schemas/";
- //非版本控制,初始化脚本
- ClassLoader loader = this.getClass().getClassLoader();
- //通过流的方式获取项目路径下的文件
- InputStream inputStream = loader.getResourceAsStream(basePath + "init.sql");
- //获取文件内容
- String sql = IoUtil.readUtf8(inputStream);
- try {
- //判断版本表是否存在
- int count = hdCommonDao.selectTableExist("hd_version");
- if (count == 0) {
- hdCommonDao.updateSql(sql);
- }
- for (SchemaData schemaData : schema) {
- //查询版本记录是否存在
- count = hdCommonDao.selectVersion(schemaData.getVersion());
- if (count == 0) {
- log.info("--------------执行数据脚本,版本:" + schemaData.getVersion());
- //获取对应sql脚本
- inputStream = loader.getResourceAsStream(basePath + schemaData.getFileName());
- sql = IoUtil.readUtf8(inputStream);
- hdCommonDao.updateSql(sql);
- DbVersionEntity entity = new DbVersionEntity();
- entity.setId(UUID.randomUUID().toString());
- entity.setVersion(schemaData.getVersion());
- entity.setCreated(new Date());
- entity.setRemark(schemaData.getFileName());
- //写入版本记录
- hdCommonDao.insertVersion(entity);
- }
- }
-
- } catch (IORuntimeException e) {
- e.printStackTrace();
- } finally {
- //关闭流
- inputStream.close();
- }
- }
-
- public void buildSchemas() {
-// schema.add(new SchemaData("v2.1", "schema_v2.1.sql"));
-// schema.add(new SchemaData("v2.2", "schema_v2.2.sql"));
- schema.add(new SchemaData("v2.3", "schema_v2.3.sql"));
- schema.add(new SchemaData("v2.4", "schema_v2.4.sql"));
- }
-
-}
+//package com.glxp.api.config;
+//
+//import cn.hutool.core.io.IORuntimeException;
+//import cn.hutool.core.io.IoUtil;
+//import cn.hutool.core.lang.UUID;
+//import com.glxp.api.dao.system.DbVersionDao;
+//import com.glxp.api.entity.system.DbVersionEntity;
+//import com.glxp.api.entity.system.SchemaData;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.boot.ApplicationArguments;
+//import org.springframework.boot.ApplicationRunner;
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//
+//import javax.annotation.Resource;
+//import java.io.InputStream;
+//import java.util.ArrayList;
+//import java.util.Date;
+//import java.util.List;
+//
+//@Order(1)
+//@Component
+//@Slf4j
+//public class HdSchemaExecutor implements ApplicationRunner {
+//
+// @Resource
+// DbVersionDao hdCommonDao;
+//
+// private List schema = new ArrayList<>();
+//
+// @Override
+// public void run(ApplicationArguments args) throws Exception {
+// //初始版本列表
+// buildSchemas();
+// //定义sql文件路径
+// String basePath = "schemas/";
+// //非版本控制,初始化脚本
+// ClassLoader loader = this.getClass().getClassLoader();
+// //通过流的方式获取项目路径下的文件
+// InputStream inputStream = loader.getResourceAsStream(basePath + "init.sql");
+// //获取文件内容
+// String sql = IoUtil.readUtf8(inputStream);
+// try {
+// //判断版本表是否存在
+// int count = hdCommonDao.selectTableExist("hd_version");
+// if (count == 0) {
+// hdCommonDao.updateSql(sql);
+// }
+// for (SchemaData schemaData : schema) {
+// //查询版本记录是否存在
+// count = hdCommonDao.selectVersion(schemaData.getVersion());
+// if (count == 0) {
+// log.info("--------------执行数据脚本,版本:" + schemaData.getVersion());
+// //获取对应sql脚本
+// inputStream = loader.getResourceAsStream(basePath + schemaData.getFileName());
+// sql = IoUtil.readUtf8(inputStream);
+// hdCommonDao.updateSql(sql);
+// DbVersionEntity entity = new DbVersionEntity();
+// entity.setId(UUID.randomUUID().toString());
+// entity.setVersion(schemaData.getVersion());
+// entity.setCreated(new Date());
+// entity.setRemark(schemaData.getFileName());
+// //写入版本记录
+// hdCommonDao.insertVersion(entity);
+// }
+// }
+//
+// } catch (IORuntimeException e) {
+// e.printStackTrace();
+// } finally {
+// //关闭流
+// inputStream.close();
+// }
+// }
+//
+// public void buildSchemas() {
+//// schema.add(new SchemaData("v2.1", "schema_v2.1.sql"));
+//// schema.add(new SchemaData("v2.2", "schema_v2.2.sql"));
+// schema.add(new SchemaData("v2.3", "schema_v2.3.sql"));
+// schema.add(new SchemaData("v2.4", "schema_v2.4.sql"));
+// }
+//
+//}
diff --git a/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java b/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java
index 9242e821..1286a699 100644
--- a/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java
+++ b/src/main/java/com/glxp/api/config/MasterDataSourceConfig.java
@@ -3,6 +3,7 @@ package com.glxp.api.config;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
+import com.glxp.api.handler.MybatisDmHandler;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -59,6 +60,9 @@ public class MasterDataSourceConfig {
sessionFactory.setGlobalConfig(globalConfig);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(MasterDataSourceConfig.MAPPER_LOCATION));
+ // 添加自定义 SQL 拦截器
+ sessionFactory.setPlugins(new MybatisDmHandler());
+
return sessionFactory.getObject();
}
diff --git a/src/main/java/com/glxp/api/handler/MybatisDmHandler.java b/src/main/java/com/glxp/api/handler/MybatisDmHandler.java
new file mode 100644
index 00000000..465d9e19
--- /dev/null
+++ b/src/main/java/com/glxp/api/handler/MybatisDmHandler.java
@@ -0,0 +1,49 @@
+package com.glxp.api.handler;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.reflection.SystemMetaObject;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+import javax.sql.DataSource;
+@Intercepts({
+ @Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})
+})
+public class MybatisDmHandler implements Interceptor {
+
+ @Override
+ public Object intercept(Invocation invocation) throws Throwable {
+ // 获取被拦截的 StatementHandler 对象
+ StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
+ MetaObject metaObject = SystemMetaObject.forObject(statementHandler);
+
+ // 获取 SQL 语句
+ String sql = (String) metaObject.getValue("delegate.boundSql.sql");
+ System.out.println("拦截到的 SQL: " + sql);
+ String processedSql = camelToSnake(sql);
+// // 可在此对 SQL 进行处理,例如修改 SQL、添加日志等
+// String processedSql = sql.toUpperCase();
+ System.out.println("处理后的 SQL: " + processedSql);
+ metaObject.setValue("delegate.boundSql.sql", processedSql);
+
+ // 继续执行原方法
+ return invocation.proceed();
+ }
+
+ @Override
+ public Object plugin(Object target) {
+ // 将目标对象包装成代理对象
+ return Plugin.wrap(target, this);
+ }
+
+ @Override
+ public void setProperties(Properties properties) {
+ // 可在此设置拦截器的属性
+ }
+ public String camelToSnake(String camelCase) {
+ // 使用正则表达式替换大写字母为下划线加小写字母
+ return camelCase.replaceAll("(?<=[a-z])([A-Z])", "_$1").toLowerCase();
+ }
+
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 5fc5ae56..724139e7 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -2,10 +2,10 @@ server:
port: 9993
spring:
datasource:
- driver-class-name: com.p6spy.engine.spy.P6SpyDriver
- jdbc-url: jdbc:p6spy:mysql://127.0.0.1:3306/udi_spms_jy?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
- username: root
- password: 123456
+ driver-class-name: dm.jdbc.driver.DmDriver
+ jdbc-url: jdbc:dm://127.0.0.1:5236/UDI_SPMS_DM?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
+ username: SYSDBA
+ password: Wykj@6066
hikari:
connection-timeout: 60000
maximum-pool-size: 60