24282 1 year ago
parent
commit
e153421f85

+ 10 - 3
my-test/src/main/java/org/example/join/sql/From.java

@@ -1,6 +1,7 @@
 package org.example.join.sql;
 package org.example.join.sql;
 
 
 import org.example.join.domain.Table;
 import org.example.join.domain.Table;
+import org.example.join.domain.TableJoin;
 import org.example.join.util.SqlConstant;
 import org.example.join.util.SqlConstant;
 
 
 public class From<R> extends SqlWrapper<R> {
 public class From<R> extends SqlWrapper<R> {
@@ -13,15 +14,21 @@ public class From<R> extends SqlWrapper<R> {
     }
     }
 
 
     public Join<R> innerJoin(Table table) {
     public Join<R> innerJoin(Table table) {
-        return new Join<>(this, sql, SqlConstant.INNER_JOIN, table);
+        return join(SqlConstant.INNER_JOIN, table);
     }
     }
 
 
     public Join<R> leftJoin(Table table) {
     public Join<R> leftJoin(Table table) {
-        return new Join<>(this, sql, SqlConstant.LEFT_JOIN, table);
+        return join(SqlConstant.LEFT_JOIN, table);
     }
     }
 
 
     public Join<R> rightJoin(Table table) {
     public Join<R> rightJoin(Table table) {
-        return new Join<>(this, sql, SqlConstant.RIGHT_JOIN, table);
+        return join(SqlConstant.RIGHT_JOIN, table);
+    }
+
+    private Join<R> join(String joinType, Table table) {
+        TableJoin tableJoin = new TableJoin(joinType, table);
+        sql.queryTableList.add(tableJoin);
+        return new Join<>(this, tableJoin.getQueryConditionList());
     }
     }
 
 
 }
 }

+ 5 - 9
my-test/src/main/java/org/example/join/sql/Join.java

@@ -4,10 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import lombok.AccessLevel;
 import lombok.AccessLevel;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.example.join.domain.QueryCondition;
 import org.example.join.domain.QueryCondition;
-import org.example.join.domain.Table;
-import org.example.join.domain.TableJoin;
 
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
@@ -16,24 +13,23 @@ import java.util.Objects;
 public class Join<R> {
 public class Join<R> {
 
 
     private final From<R> from;
     private final From<R> from;
-    private final Sql<R> sql;
-    private final String join;
-    private final Table table;
+    private final List<QueryCondition> queryConditionList;
 
 
     public From<R> on(QueryCondition... queryConditions) {
     public From<R> on(QueryCondition... queryConditions) {
+
         if (ObjectUtil.isEmpty(queryConditions)) {
         if (ObjectUtil.isEmpty(queryConditions)) {
             throw new IllegalArgumentException("on不能为空");
             throw new IllegalArgumentException("on不能为空");
         }
         }
 
 
-        List<QueryCondition> queryConditionList = new ArrayList<>(Arrays.stream(queryConditions).filter(Objects::nonNull).toList());
+        List<QueryCondition> queryConditionList = Arrays.stream(queryConditions).filter(Objects::nonNull).toList();
 
 
         if (queryConditionList.isEmpty()) {
         if (queryConditionList.isEmpty()) {
             throw new IllegalArgumentException("on不能为空");
             throw new IllegalArgumentException("on不能为空");
         }
         }
 
 
-        sql.queryTableList.add(new TableJoin(join, table, queryConditionList));
+        this.queryConditionList.addAll(queryConditionList);
 
 
-        return from;
+        return this.from;
     }
     }
 
 
 }
 }

+ 1 - 1
my-test/src/main/java/org/example/join/util/SqlConstant.java

@@ -41,7 +41,6 @@ public interface SqlConstant {
     String IN = " in ";
     String IN = " in ";
     String NOT_IN = " not in ";
     String NOT_IN = " not in ";
 
 
-
     /**
     /**
      * 函数关键字
      * 函数关键字
      */
      */
@@ -63,4 +62,5 @@ public interface SqlConstant {
     String MONTH = "MONTH";
     String MONTH = "MONTH";
     String DAY = "DAY";
     String DAY = "DAY";
     String HOUR = "HOUR";
     String HOUR = "HOUR";
+
 }
 }