24282 1 year ago
parent
commit
9f2b8b735a

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

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
 import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import org.apache.ibatis.reflection.property.PropertyNamer;
 import org.apache.ibatis.reflection.property.PropertyNamer;
-import org.example.join.util.SqlConstant;
 import org.example.join.util.SqlUtil;
 import org.example.join.util.SqlUtil;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -14,7 +13,6 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.StringJoiner;
 import java.util.StringJoiner;
-import java.util.stream.Collectors;
 
 
 public class QueryColumnFunction implements IFormat, IQueryColumn {
 public class QueryColumnFunction implements IFormat, IQueryColumn {
 
 
@@ -40,23 +38,9 @@ public class QueryColumnFunction implements IFormat, IQueryColumn {
 
 
     @Override
     @Override
     public String toSql(Map<String, String> tableAliasMap, Map<String, Object> paramMap) {
     public String toSql(Map<String, String> tableAliasMap, Map<String, Object> paramMap) {
-        StringJoiner joiner = new StringJoiner(StringPool.EMPTY);
-
-        String queryColumnStr = columns
-                .stream()
-                .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();
+        StringJoiner joiner = new StringJoiner(StringPool.COMMA, StringPool.LEFT_BRACKET, StringPool.RIGHT_BRACKET);
+        columns.forEach(item -> SqlUtil.putValue(tableAliasMap, paramMap, joiner, item));
+        return fnName + joiner;
     }
     }
 
 
 }
 }

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

@@ -3,6 +3,7 @@ package org.example.join.domain;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import org.example.join.util.SqlConstant;
 import org.example.join.util.SqlConstant;
+import org.example.join.util.SqlUtil;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collection;
@@ -31,20 +32,6 @@ public class QueryCondition implements IFormat {
         this.queryConditionConnectList = queryConditionConnectList;
         this.queryConditionConnectList = queryConditionConnectList;
     }
     }
 
 
-    private static void putParam(Map<String, Object> paramMap, StringJoiner joiner, Object value) {
-        String mapKey = SqlConstant.SQL_PARAM + (paramMap.size() + 1);
-        joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
-        paramMap.put(mapKey, value);
-    }
-
-    private static void putValue(Map<String, String> tableAliasMap, Map<String, Object> paramMap, StringJoiner joiner, Object value) {
-        if (value instanceof IQueryColumn) {
-            joiner.add(((IQueryColumn) value).toSql(tableAliasMap, paramMap));
-        } else {
-            putParam(paramMap, joiner, value);
-        }
-    }
-
     public QueryCondition and(QueryCondition queryCondition) {
     public QueryCondition and(QueryCondition queryCondition) {
         QueryCondition newQueryCondition = copy();
         QueryCondition newQueryCondition = copy();
         newQueryCondition.queryConditionConnectList.add(new QueryConditionConnect(SqlConstant.AND, queryCondition));
         newQueryCondition.queryConditionConnectList.add(new QueryConditionConnect(SqlConstant.AND, queryCondition));
@@ -94,26 +81,26 @@ public class QueryCondition implements IFormat {
                 case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
                 case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
                     joiner.add(logic);
                     joiner.add(logic);
                     Object[] valueObj = (Object[]) value;
                     Object[] valueObj = (Object[]) value;
-                    putValue(tableAliasMap, paramMap, joiner, valueObj[0]);
+                    SqlUtil.putValue(tableAliasMap, paramMap, joiner, valueObj[0]);
                     joiner.add(SqlConstant.AND);
                     joiner.add(SqlConstant.AND);
-                    putValue(tableAliasMap, paramMap, joiner, valueObj[1]);
+                    SqlUtil.putValue(tableAliasMap, paramMap, joiner, valueObj[1]);
                 }
                 }
                 case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
                 case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
                     joiner.add(logic);
                     joiner.add(logic);
                     joiner.add("concat('%',");
                     joiner.add("concat('%',");
-                    putValue(tableAliasMap, paramMap, joiner, value);
+                    SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
                     joiner.add(",'%')");
                     joiner.add(",'%')");
                 }
                 }
                 case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
                 case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
                     joiner.add(SqlConstant.LIKE);
                     joiner.add(SqlConstant.LIKE);
                     joiner.add("concat('%',");
                     joiner.add("concat('%',");
-                    putValue(tableAliasMap, paramMap, joiner, value);
+                    SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
                     joiner.add(")");
                     joiner.add(")");
                 }
                 }
                 case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
                 case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
                     joiner.add(SqlConstant.LIKE);
                     joiner.add(SqlConstant.LIKE);
                     joiner.add("concat(");
                     joiner.add("concat(");
-                    putValue(tableAliasMap, paramMap, joiner, value);
+                    SqlUtil.putValue(tableAliasMap, paramMap, joiner, value);
                     joiner.add(",'%')");
                     joiner.add(",'%')");
                 }
                 }
                 case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
                 case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
@@ -124,7 +111,7 @@ public class QueryCondition implements IFormat {
                     Object[] array = inValue.toArray();
                     Object[] array = inValue.toArray();
                     joiner.add("(");
                     joiner.add("(");
                     for (int i = 0; i < size; i++) {
                     for (int i = 0; i < size; i++) {
-                        putValue(tableAliasMap, paramMap, joiner, array[i]);
+                        SqlUtil.putValue(tableAliasMap, paramMap, joiner, array[i]);
                         if (i == size - 1) {
                         if (i == size - 1) {
                             joiner.add(")");
                             joiner.add(")");
                         } else {
                         } else {
@@ -134,7 +121,7 @@ public class QueryCondition implements IFormat {
                 }
                 }
                 default -> {
                 default -> {
                     joiner.add(logic);
                     joiner.add(logic);
-                    putParam(paramMap, joiner, value);
+                    SqlUtil.putParam(paramMap, joiner, value);
                 }
                 }
             }
             }
         }
         }

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

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import org.example.join.domain.IQueryColumn;
 import org.example.join.domain.Table;
 import org.example.join.domain.Table;
 
 
 import java.util.Map;
 import java.util.Map;
+import java.util.StringJoiner;
 
 
 public class SqlUtil {
 public class SqlUtil {
 
 
@@ -34,8 +36,18 @@ public class SqlUtil {
         return logicDeleteFieldInfo.getColumn();
         return logicDeleteFieldInfo.getColumn();
     }
     }
 
 
-    public static String withBracket(String sql) {
-        return StringPool.LEFT_BRACKET + sql + StringPool.RIGHT_BRACKET;
+    public static void putParam(Map<String, Object> paramMap, StringJoiner joiner, Object value) {
+        String mapKey = SqlConstant.SQL_PARAM + (paramMap.size() + 1);
+        joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
+        paramMap.put(mapKey, value);
+    }
+
+    public static void putValue(Map<String, String> tableAliasMap, Map<String, Object> paramMap, StringJoiner joiner, Object value) {
+        if (value instanceof IQueryColumn) {
+            joiner.add(((IQueryColumn) value).toSql(tableAliasMap, paramMap));
+        } else {
+            putParam(paramMap, joiner, value);
+        }
     }
     }
 
 
 }
 }