24282 1 سال پیش
والد
کامیت
429bb88eb8

+ 1 - 1
my-test/src/main/java/org/example/join/domain/QueryColumnCompute.java

@@ -17,7 +17,7 @@ public class QueryColumnCompute implements IFormat {
 
     @Override
     public String toSql() {
-        return computeType + (value instanceof IFormat ? ((IFormat) value).toSql() : value.toString());
+        return computeType + (value instanceof IFormat iFormat ? iFormat.toSql() : value.toString());
     }
 
 }

+ 2 - 2
my-test/src/main/java/org/example/join/domain/QueryCondition.java

@@ -67,9 +67,9 @@ public class QueryCondition implements IFormat {
         StringJoiner joiner = new StringJoiner(StringPool.EMPTY);
         joiner.add(column.toSql());
 
-        if (value instanceof IQueryColumn) {
+        if (value instanceof IQueryColumn iQueryColumn) {
             joiner.add(logic);
-            joiner.add(((IQueryColumn) value).toSql());
+            joiner.add(iQueryColumn.toSql());
         } else {
             switch (logic) {
                 case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {

+ 9 - 3
my-test/src/main/java/org/example/join/domain/QueryMethods.java

@@ -1,6 +1,5 @@
 package org.example.join.domain;
 
-import cn.hutool.core.util.ArrayUtil;
 import org.example.join.util.SqlConstant;
 
 /**
@@ -32,8 +31,8 @@ public class QueryMethods {
     /**
      * 将字符串 s1,s2 等多个字符串合并为一个字符串。
      */
-    public static QueryColumnFunction concat(Object obj1, Object obj2, Object... objs) {
-        return new QueryColumnFunction(SqlConstant.CONCAT, ArrayUtil.addAll(new Object[]{obj1, obj2}, objs));
+    public static QueryColumnFunction concat(Object... objs) {
+        return new QueryColumnFunction(SqlConstant.CONCAT, objs);
     }
 
     /**
@@ -51,6 +50,13 @@ public class QueryMethods {
     }
 
     /**
+     * 判断处理
+     */
+    public static QueryColumnFunction _if(Object obj1, Object obj2, Object obj3) {
+        return new QueryColumnFunction(SqlConstant.IF, obj1, obj2, obj3);
+    }
+
+    /**
      * 判断值是否为null
      */
     public static QueryColumnFunction ifNull(Object obj1, Object obj2) {

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

@@ -52,6 +52,7 @@ public interface SqlConstant {
     String CONCAT = "CONCAT";
     String DATEDIFF = "DATEDIFF";
     String DATE_FORMAT = "DATE_FORMAT";
+    String IF = "IF";
     String IFNULL = "IFNULL";
     String MAX = "MAX";
     String MIN = "MIN";

+ 3 - 3
my-test/src/main/java/org/example/join/util/SqlUtil.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import org.example.join.domain.IQueryColumn;
+import org.example.join.domain.IFormat;
 import org.example.join.domain.Table;
 import org.example.join.sql.SqlContext;
 
@@ -29,8 +29,8 @@ public class SqlUtil {
     }
 
     public static void putValue(StringJoiner joiner, Object value) {
-        if (value instanceof IQueryColumn) {
-            joiner.add(((IQueryColumn) value).toSql());
+        if (value instanceof IFormat iFormat) {
+            joiner.add(iFormat.toSql());
         } else {
             putParam(joiner, value);
         }

+ 12 - 17
my-test/src/test/java/MySpringBootTest.java

@@ -1,5 +1,4 @@
 import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.dromara.system.domain.SysDept;
 import org.dromara.system.service.ISysUserService;
 import org.example.DromaraApplication;
@@ -12,6 +11,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.List;
+
+import static org.example.join.domain.QueryMethods._if;
+import static org.example.join.domain.QueryMethods.concat;
+import static org.example.join.domain.QueryMethods.ifNull;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = DromaraApplication.class)
 public class MySpringBootTest {
@@ -35,12 +40,13 @@ public class MySpringBootTest {
     @Test
     public void testCache() {
 
-        Page<SysDept> list = Sql.create(SysDept.class)
+        List<SysDept> list = Sql.create(SysDept.class)
                 //.logic()
                 .select(
                         parent_id,
-                        tenant_id,
-                        dept_id
+                        _if(tenant_id.eq("000000"), "999999", "888888").as(SysDept::getTenantId),
+                        dept_id,
+                        concat(0).as(SysDept::getAncestors)
                 )
                 .from(sys_dept)
                 .leftJoin(sys_user).on(user_id.eq(dept_id))
@@ -66,25 +72,14 @@ public class MySpringBootTest {
                         //create_by.in(1, 2, 3, 4),
                         //create_by.notIn(1, 2, 3, 4)
                 )
-                .orderByAsc()
-                .groupBy()
 
                 .union()
 
-                .logic()
-                .select(
-                        parent_id,
-                        tenant_id,
-                        dept_id
-                )
+                .select(parent_id, tenant_id, ifNull(dept_id, 0), concat(1).as(SysDept::getAncestors))
                 .from(sys_dept)
                 .leftJoin(sys_user).on(user_id.eq(dept_id))
-                .where(
-                )
-                .orderByAsc()
-                .groupBy()
+                .list();
 
-                .page(new Page<>(1, 10));
 
         System.out.println(JSONObject.toJSONString(list));