From d37c905df913eaae684c95f2cd55cb1d4f1adbf5 Mon Sep 17 00:00:00 2001
From: wxn <154544017@qq.com>
Date: Mon, 7 Aug 2023 10:59:29 +0800
Subject: [PATCH] =?UTF-8?q?1.=20=E5=8E=BB=E9=99=A4=E4=BA=86SpringBoot?=
=?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96=EF=BC=8C=E5=8F=AA=E9=9C=80=E8=A6=81?=
=?UTF-8?q?Junit=E5=8D=B3=E5=8F=AF=202.=20=E5=A4=84=E7=90=86=E4=BA=86?=
=?UTF-8?q?=E5=B8=B8=E9=87=8F=E5=AD=97=E6=AE=B5=E3=80=81=E9=9B=86=E5=90=88?=
=?UTF-8?q?=E6=93=8D=E4=BD=9C=203.=20=E7=94=A8=E9=80=92=E5=BD=92=E6=94=B9?=
=?UTF-8?q?=E5=86=99Visitor=E5=A4=84=E7=90=86=E5=AD=90=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E8=A7=A3=E6=9E=90=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 19 +-
src/main/java/com/luop/MySelectVisitor.java | 354 +++++++++++-------
src/main/java/com/luop/MySelectVisitor2.java | 137 -------
src/main/java/com/luop/SelectParseHelper.java | 17 +-
.../java/com/luop/SqlAnalysisApplication.java | 13 -
.../com/luop/SqlAnalysisApplicationTests.java | 43 ++-
6 files changed, 281 insertions(+), 302 deletions(-)
delete mode 100644 src/main/java/com/luop/MySelectVisitor2.java
delete mode 100644 src/main/java/com/luop/SqlAnalysisApplication.java
diff --git a/pom.xml b/pom.xml
index 19f2e97..bc96c39 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,24 +24,13 @@
com.github.jsqlparser
jsqlparser
- 0.9.1
+ 3.2
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-test
+ org.junit.jupiter
+ junit-jupiter
+ 5.6.3
test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
diff --git a/src/main/java/com/luop/MySelectVisitor.java b/src/main/java/com/luop/MySelectVisitor.java
index 259e2a2..0363063 100644
--- a/src/main/java/com/luop/MySelectVisitor.java
+++ b/src/main/java/com/luop/MySelectVisitor.java
@@ -1,90 +1,217 @@
package com.luop;
+/**
+ * @author wxn
+ * @date 2023/8/7
+ */
import net.sf.jsqlparser.expression.*;
import net.sf.jsqlparser.schema.Column;
import net.sf.jsqlparser.schema.Table;
import net.sf.jsqlparser.statement.select.*;
-import org.springframework.util.StringUtils;
import java.util.*;
+
/**
- * @Author: luoping
- * @Date: 2019/11/5 09:50
- * @Description:
+ * @Author: wxn
+ * @Date: 2023/05/25
+ * 用递归来解决多层嵌套子查询的问题
*/
-public class MySelectVisitor implements SelectVisitor {
- //用来存储查询SQL语句涉及到的表和字段
- @Override
- public void visit(PlainSelect pSelect) {
- processFromItem(pSelect, pSelect.getFromItem());
- //子查询处理,joins处理
+public class MySelectVisitor {
+ /**
+ * 递归visit,通过对子查询visit并合并columnsMapping实现整体语句的解析
+ * @param setList
+ * @param columnsMapping
+ */
+ public void visit(SetOperationList setList, Map> columnsMapping) {
+ List setSelectBodies = setList.getSelects();
+ List