24282 1 жил өмнө
parent
commit
6707888cc7

+ 19 - 4
my-test/src/main/java/org/example/join/domain/QueryColumnFunction.java

@@ -6,23 +6,28 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import org.apache.ibatis.reflection.property.PropertyNamer;
+import org.example.join.util.SqlConstant;
 import org.example.join.util.SqlUtil;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.StringJoiner;
 import java.util.stream.Collectors;
 
 public class QueryColumnFunction implements IFormat, IQueryColumn {
 
     private final String fnName;
 
-    private final List<IQueryColumn> columns;
+    private final List<Object> columns;
 
     public QueryColumnFunction(String fnName) {
         this.fnName = fnName;
         this.columns = new ArrayList<>();
     }
 
-    public QueryColumnFunction(String fnName, IQueryColumn... columns) {
+    public QueryColumnFunction(String fnName, Object... columns) {
         this(fnName);
         this.columns.addAll(Arrays.asList(columns));
     }
@@ -39,9 +44,19 @@ public class QueryColumnFunction implements IFormat, IQueryColumn {
 
         String queryColumnStr = columns
                 .stream()
-                .map(item -> item.toSql(tableAliasMap, paramMap))
+                .map(item -> {
+                    if (item instanceof IQueryColumn) {
+                        return ((IQueryColumn) item).toSql(tableAliasMap, paramMap);
+                    } else {
+                        String mapKey = SqlConstant.SQL_PARAM + (paramMap.size() + 1);
+                        paramMap.put(mapKey, item);
+                        return StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE;
+                    }
+
+                })
                 .collect(Collectors.joining(","));
 
         return joiner.add(fnName).add(SqlUtil.withBracket(queryColumnStr)).toString();
     }
+
 }

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

@@ -32,12 +32,8 @@ public class QueryMethods {
     /**
      * 将字符串 s1,s2 等多个字符串合并为一个字符串。
      */
-    public static QueryColumnFunction concat(String queryColumnS1, String queryColumnS2, String... columnN) {
-        RawQueryColumn[] rawQueryColumns = new RawQueryColumn[columnN.length];
-        for (int i = 0; i < columnN.length; i++) {
-            rawQueryColumns[i] = string(columnN[i]);
-        }
-        return new QueryColumnFunction(SqlConstant.CONCAT, ArrayUtil.addAll(new RawQueryColumn[]{string(queryColumnS1), string(queryColumnS2)}, rawQueryColumns));
+    public static QueryColumnFunction concat(Object... objects) {
+        return new QueryColumnFunction(SqlConstant.CONCAT, objects);
     }
 
     /**

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

@@ -13,7 +13,7 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.List;
 
-import static org.example.join.domain.QueryMethods.*;
+import static org.example.join.domain.QueryMethods.concat;
 
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = DromaraApplication.class)
@@ -41,36 +41,38 @@ public class MySpringBootTest {
         List<SysDept> list = Sql.create(SysDept.class)
                 //.logicIgnore()
                 .select(
-                        dept_id.as(SysDept::getEmail),
-                        abs(parent_id).as(SysDept::getUpdateTime),
-                        replace(dept_id, "2", "3"),
-                        concat("@","1"),
-                        concat("dept_id","@","1"),
-                        concat(dept_id, parent_id),
-                        dateFormat(now(), "%Y%m"),
-                        ifNull("2","2")
+                        //dept_id,
+                        //abs(parent_id).as(SysDept::getUpdateTime),
+                        //replace(dept_id, "2", "3"),
+                        //concat("@", "1"),
+                        concat(dept_id, 1, "',(select config_value from sys_config where config_id = 1749335361951907842),'").as(SysDept::getEmail)
+                        //concat(dept_id, parent_id),
+                        //concat(dept_id,"sdasdsa"),
+                        //dateFormat(now(), "%Y%m"),
+                        //ifNull("2", "2")
                 )
                 .from(sys_dept)
                 .leftJoin(sys_user).on(user_id.eq(dept_id))
                 .where(
-                        create_by.eq(98),
-                        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)
+                        //dept_id.add(parent_id).eq(parent_id)
+                        //create_by.eq(concat("dept_id", "@", "',(select config_value from sys_config where config_id = 1749335361951907842),'").as(SysDept::getEmail))
+                        //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)
                 )
                 .list();