From d15832c78453e8c021b4b579f5ce2982203d1e46 Mon Sep 17 00:00:00 2001 From: lbw Date: Tue, 12 Dec 2023 12:30:37 +0800 Subject: [PATCH] :recycle: Refactoring code. sql server durid --- .../pigx/common/data/mybatis/DruidSqlLogFilter.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/DruidSqlLogFilter.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/DruidSqlLogFilter.java index f1825b556..1dd957acb 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/DruidSqlLogFilter.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/DruidSqlLogFilter.java @@ -23,12 +23,12 @@ import com.alibaba.druid.DbType; import com.alibaba.druid.filter.FilterChain; import com.alibaba.druid.filter.FilterEventAdapter; import com.alibaba.druid.proxy.jdbc.JdbcParameter; -import com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl; import com.alibaba.druid.proxy.jdbc.ResultSetProxy; import com.alibaba.druid.proxy.jdbc.StatementProxy; import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; +import com.alibaba.druid.sql.dialect.sqlserver.visitor.SQLServerSchemaStatVisitor; import com.alibaba.druid.sql.visitor.SchemaStatVisitor; import com.alibaba.druid.stat.TableStat; import com.alibaba.druid.util.StringUtils; @@ -36,7 +36,6 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Import; -import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.time.temporal.TemporalAccessor; import java.util.ArrayList; @@ -195,7 +194,14 @@ public class DruidSqlLogFilter extends FilterEventAdapter { List stmtList = SQLUtils.parseStatements(sql, dbType); for (SQLStatement stmt : stmtList) { // 也可以用更精确的解析器,如MySqlSchemaStatVisitor - SchemaStatVisitor visitor = new SchemaStatVisitor(); + SchemaStatVisitor visitor; + // SQL server 数据库特殊处理 + if (DbType.sqlserver.name().equalsIgnoreCase(dbType)) { + visitor = new SQLServerSchemaStatVisitor(); + } + else { + visitor = new SchemaStatVisitor(); + } stmt.accept(visitor); Map tables = visitor.getTables(); for (TableStat.Name name : tables.keySet()) {