24282 1 жил өмнө
parent
commit
9a98941627

+ 11 - 0
my-test/src/main/java/org/example/join/model/ITable.java

@@ -1,4 +1,15 @@
 package org.example.join.model;
 
 public interface ITable extends IFormat {
+
+    String getAlias();
+
+    default QueryColumn field(String fieldName) {
+        return new QueryColumn(this, fieldName);
+    }
+
+    default QueryColumn field(QueryColumn queryColumn) {
+        return new QueryColumn(this, queryColumn.getName());
+    }
+
 }

+ 9 - 4
my-test/src/main/java/org/example/join/model/QueryColumn.java

@@ -1,22 +1,28 @@
 package org.example.join.model;
 
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
+@Getter
 @RequiredArgsConstructor
 public class QueryColumn extends AbstractQueryColumn {
 
     /**
      * 表
      */
-    private final Table table;
+    private final ITable table;
 
     /**
      * 字段名
      */
     private final String name;
 
+    public QueryColumn(String tableAlise, String name) {
+        this.table = new Table(tableAlise, tableAlise);
+        this.name = name;
+    }
+
     @Override
     protected QueryColumn copy() {
         return new QueryColumn(this.table, this.name);
@@ -24,8 +30,7 @@ public class QueryColumn extends AbstractQueryColumn {
 
     @Override
     public String toSql() {
-        String tableAs = StrUtil.isNotBlank(table.getAlias()) ? table.getAlias() : table.getName();
-        String sql = tableAs + StringPool.DOT + name;
+        String sql = table.getAlias() + StringPool.DOT + name;
         return spliceCompute(sql);
     }
 

+ 4 - 0
my-test/src/main/java/org/example/join/model/Table.java

@@ -17,6 +17,10 @@ public class Table implements ITable {
         this.name = name;
     }
 
+    public String getAlias() {
+        return StrUtil.isNotBlank(alias) ? alias : name;
+    }
+
     @Override
     public String toSql() {
         if (StrUtil.isBlank(alias)) {

+ 5 - 0
my-test/src/main/java/org/example/join/model/TableJoin.java

@@ -20,6 +20,11 @@ public class TableJoin implements ITable {
     private final List<QueryCondition> queryConditionList = new ArrayList<>();
 
     @Override
+    public String getAlias() {
+        return table.getAlias();
+    }
+
+    @Override
     public String toSql() {
         String on = queryConditionList.stream()
                 .filter(ObjectUtil::isNotNull)

+ 0 - 2
my-test/src/main/java/org/example/join/sql/Sql.java

@@ -96,8 +96,6 @@ public class Sql implements IFormat {
                     QueryColumn queryColumn = new QueryColumn(table, tableDelFlag);
                     tableJoin.getQueryConditionList().add(new QueryCondition(queryColumn, SqlConstant.EQ, sql.logic ? 1 : 0));
                 }
-            } else {
-                return;
             }
         }
     }

+ 5 - 0
my-test/src/main/java/org/example/join/sql/SqlWrapper.java

@@ -14,6 +14,7 @@ import org.example.join.model.AbstractQueryColumn;
 import org.example.join.model.QueryColumn;
 import org.example.join.model.QueryCondition;
 import org.example.join.model.QueryConditionOrder;
+import org.example.join.model.Table;
 import org.example.join.model.TableSublist;
 
 import java.util.Arrays;
@@ -32,6 +33,10 @@ public class SqlWrapper extends AbstractQueryColumn {
         return new TableSublist(sql, alias);
     }
 
+    public TableSublist asTable(Table table) {
+        return new TableSublist(sql, table.getAlias());
+    }
+
     public SqlWrapper where(QueryCondition... queryCondition) {
         if (ObjectUtil.isNotEmpty(queryCondition)) {
             sql.queryConditionList.addAll(ListUtil.toList(queryCondition));

+ 11 - 29
my-test/src/test/java/MySpringBootTest.java

@@ -3,6 +3,7 @@ import org.dromara.system.domain.SysDept;
 import org.example.DromaraApplication;
 import org.example.join.model.QueryColumn;
 import org.example.join.model.Table;
+import org.example.join.model.TableSublist;
 import org.example.join.sql.Sql;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -11,8 +12,6 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.List;
 
-import static org.example.join.model.QueryMethod.concat;
-
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = DromaraApplication.class)
 public class MySpringBootTest {
@@ -22,6 +21,7 @@ public class MySpringBootTest {
     public final QueryColumn tenant_id = new QueryColumn(sys_dept, "tenant_id");
     public final QueryColumn parent_id = new QueryColumn(sys_dept, "parent_id");
     public final QueryColumn ancestors = new QueryColumn(sys_dept, "ancestors");
+    public final QueryColumn status = new QueryColumn(sys_dept, "status");
 
     public static final Table sys_user = new Table("sys_user");
     public final QueryColumn user_id = new QueryColumn(sys_user, "user_id");
@@ -33,39 +33,21 @@ public class MySpringBootTest {
     @Test
     public void testCache() {
 
+        TableSublist childTable = Sql.create().select(dept_id, tenant_id, status).from(sys_dept).asTable(sys_dept);
+
         List<SysDept> list = Sql.create()
                 //.logic()
                 .select(
-                        parent_id,
-                        Sql.create().select(dept_id).from(sys_dept).limit(1).as("ccc"),
                         dept_id,
-                        concat(0).as(SysDept::getAncestors)
+                        tenant_id,
+                        childTable.field(status),
+                        childTable.field("status"),
+                        Sql.create().select(dept_id).from(sys_dept).limit(1).as("ccc")
                 )
-                .from(Sql.create().select(dept_id, tenant_id, parent_id, ancestors).from(sys_dept).asTable(sys_dept.getName()))
-                .leftJoin(sys_user).on(user_id.eq(dept_id))
+                .from(childTable)
+                .leftJoin(sys_user).on(childTable.field(dept_id).eq(user_id))
                 .where(
-                        Sql.create().select(dept_id).from(sys_dept).limit(1).eq("sss")
-                        //dept_id.isNull(),
-                        //dept_id.eq(100)
-                        //concat("777", "555").eq(create_by),
-                        //create_by.eq(concat("777", "555").add(777)).and(concat("777", "555").eq("sss")),
-                        //create_by.ne(98),
-                        //create_by.gt(98),
-                        //create_by.lt(98),
-                        //create_by.ge(98),
-                        //create_by.le(98),
-                        //create_by.between(1, 2),
-                        //create_by.notBetween(1, 2),
-                        //create_by.like(1),
-                        //create_by.notLike(1),
-                        //create_by.likeLeft(1),
-                        //create_by.notLikeLeft(1),
-                        //create_by.likeRight(1),
-                        //create_by.notLikeRight(1),
-                        //create_by.isNull(),
-                        //create_by.isNotNull(),
-                        //create_by.in(1, 2, 3, 4),
-                        //create_by.notIn(1, 2, 3, 4)
+                        Sql.create().select(dept_id).from(sys_dept).limit(1).eq(100)
                 )
                 .list(SysDept.class);