24282 1 jaar geleden
bovenliggende
commit
10b1d047b6

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

@@ -8,7 +8,6 @@ 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 java.util.ArrayList;
 import java.util.Collection;

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

@@ -2,7 +2,7 @@ package org.example.join.domain;
 
 import cn.hutool.core.collection.ListUtil;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import org.example.join.util.SqlUtil;
+import org.example.join.sql.SqlContext;
 
 import java.util.List;
 import java.util.StringJoiner;
@@ -32,7 +32,7 @@ public class QueryColumnFunction extends AbstractQueryColumn {
     @Override
     public String toSql() {
         StringJoiner joiner = new StringJoiner(StringPool.COMMA, StringPool.LEFT_BRACKET, StringPool.RIGHT_BRACKET);
-        columns.forEach(item -> SqlUtil.putValue(joiner, item));
+        columns.forEach(item -> SqlContext.putValue(joiner, item));
         String sql = fnName + joiner;
         return spliceCompute(sql);
     }

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

@@ -3,8 +3,7 @@ package org.example.join.domain;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import lombok.RequiredArgsConstructor;
-import org.example.join.util.SqlConstant;
-import org.example.join.util.SqlUtil;
+import org.example.join.sql.SqlContext;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -72,12 +71,12 @@ public class QueryCondition implements IFormat {
         switch (logic) {
             case SqlConstant.EQ, SqlConstant.NE, SqlConstant.GT, SqlConstant.LT, SqlConstant.GE, SqlConstant.LE -> {
                 joiner.add(logic);
-                SqlUtil.putValue(joiner, value);
+                SqlContext.putValue(joiner, value);
             }
             case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
                 joiner.add(logic);
                 joiner.add("concat('%',");
-                SqlUtil.putValue(joiner, value);
+                SqlContext.putValue(joiner, value);
                 joiner.add(",'%')");
             }
             case SqlConstant.IN, SqlConstant.NOT_IN -> {
@@ -85,27 +84,27 @@ public class QueryCondition implements IFormat {
                 List<Object> inList = new ArrayList<>((Collection<?>) value);
                 joiner.add("(");
                 for (int i = 0; i < inList.size(); i++) {
-                    SqlUtil.putValue(joiner, inList.get(i));
+                    SqlContext.putValue(joiner, inList.get(i));
                     joiner.add(inList.size() == i + 1 ? ")" : ",");
                 }
             }
             case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
                 joiner.add(logic);
                 Object[] valueObj = (Object[]) value;
-                SqlUtil.putValue(joiner, valueObj[0]);
+                SqlContext.putValue(joiner, valueObj[0]);
                 joiner.add(SqlConstant.AND);
-                SqlUtil.putValue(joiner, valueObj[1]);
+                SqlContext.putValue(joiner, valueObj[1]);
             }
             case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
                 joiner.add(logic.equals(SqlConstant.LIKE_LEFT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
                 joiner.add("concat('%',");
-                SqlUtil.putValue(joiner, value);
+                SqlContext.putValue(joiner, value);
                 joiner.add(")");
             }
             case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
                 joiner.add(logic.equals(SqlConstant.LIKE_RIGHT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
                 joiner.add("concat(");
-                SqlUtil.putValue(joiner, value);
+                SqlContext.putValue(joiner, value);
                 joiner.add(",'%')");
             }
             case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);

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

@@ -1,7 +1,5 @@
 package org.example.join.domain;
 
-import org.example.join.util.SqlConstant;
-
 /**
  * SQL 函数。
  */

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

@@ -1,4 +1,4 @@
-package org.example.join.util;
+package org.example.join.domain;
 
 public interface SqlConstant {
 

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

@@ -2,7 +2,6 @@ package org.example.join.domain;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
-import org.example.join.util.SqlConstant;
 
 import java.util.ArrayList;
 import java.util.List;

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

@@ -1,8 +1,8 @@
 package org.example.join.sql;
 
+import org.example.join.domain.SqlConstant;
 import org.example.join.domain.Table;
 import org.example.join.domain.TableJoin;
-import org.example.join.util.SqlConstant;
 
 public class From<R> extends SqlWrapper<R> {
 

+ 27 - 1
my-test/src/main/java/org/example/join/sql/SqlContext.java

@@ -2,14 +2,20 @@ package org.example.join.sql;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+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.IFormat;
 import org.example.join.domain.ITable;
+import org.example.join.domain.SqlConstant;
 import org.example.join.domain.Table;
 import org.example.join.domain.TableJoin;
-import org.example.join.util.SqlConstant;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.StringJoiner;
 
 @SuppressWarnings("unchecked")
 public class SqlContext {
@@ -93,4 +99,24 @@ public class SqlContext {
         return tableAliasMap;
     }
 
+    public static String getTableDelFlag(Table table) {
+        TableInfo tableInfo = TableInfoHelper.getTableInfo(table.getName());
+        if (!tableInfo.isWithLogicDelete()) {
+            return null;
+        }
+
+        TableFieldInfo logicDeleteFieldInfo = tableInfo.getLogicDeleteFieldInfo();
+        return logicDeleteFieldInfo.getColumn();
+    }
+
+    public static void putValue(StringJoiner joiner, Object value) {
+        if (value instanceof IFormat iFormat) {
+            joiner.add(iFormat.toSql());
+        } else {
+            String mapKey = getParamKey();
+            joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
+            getParamMap().put(mapKey, value);
+        }
+    }
+
 }

+ 3 - 4
my-test/src/main/java/org/example/join/sql/SqlProvider.java

@@ -10,10 +10,9 @@ import org.example.join.domain.ITable;
 import org.example.join.domain.QueryColumn;
 import org.example.join.domain.QueryCondition;
 import org.example.join.domain.QueryConditionOrder;
+import org.example.join.domain.SqlConstant;
 import org.example.join.domain.Table;
 import org.example.join.domain.TableJoin;
-import org.example.join.util.SqlConstant;
-import org.example.join.util.SqlUtil;
 
 import java.util.List;
 import java.util.Map;
@@ -85,14 +84,14 @@ public class SqlProvider {
         for (int i = queryTableList.size() - 1; i >= 0; i--) {
             ITable iTable = queryTableList.get(i);
             if (iTable instanceof Table table) {
-                String tableDelFlag = SqlUtil.getTableDelFlag(table);
+                String tableDelFlag = SqlContext.getTableDelFlag(table);
                 if (ObjectUtil.isNotEmpty(tableDelFlag)) {
                     QueryColumn queryColumn = new QueryColumn(table, tableDelFlag);
                     sql.queryConditionList.add(0, new QueryCondition(queryColumn, SqlConstant.EQ, sql.logic ? 1 : 0));
                 }
             } else if (iTable instanceof TableJoin tableJoin) {
                 Table table = tableJoin.getTable();
-                String tableDelFlag = SqlUtil.getTableDelFlag(table);
+                String tableDelFlag = SqlContext.getTableDelFlag(table);
                 if (ObjectUtil.isNotEmpty(tableDelFlag)) {
                     QueryColumn queryColumn = new QueryColumn(table, tableDelFlag);
                     tableJoin.getQueryConditionList().add(new QueryCondition(queryColumn, SqlConstant.EQ, sql.logic ? 1 : 0));

+ 8 - 1
my-test/src/main/java/org/example/join/sql/SqlWrapper.java

@@ -13,7 +13,7 @@ import org.example.join.JoinMapper;
 import org.example.join.domain.QueryColumn;
 import org.example.join.domain.QueryCondition;
 import org.example.join.domain.QueryConditionOrder;
-import org.example.join.util.SqlConstant;
+import org.example.join.domain.SqlConstant;
 
 import java.util.Arrays;
 import java.util.Date;
@@ -34,6 +34,13 @@ public class SqlWrapper<R> {
         return this;
     }
 
+    public SqlWrapper<R> where(boolean condition, QueryCondition... queryCondition) {
+        if (condition) {
+            where(queryCondition);
+        }
+        return this;
+    }
+
     public SqlWrapper<R> groupBy(QueryColumn... queryColumns) {
         if (ObjectUtil.isNotEmpty(queryColumns)) {
             sql.groupByList.addAll(ListUtil.toList(queryColumns));

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

@@ -1,35 +0,0 @@
-package org.example.join.util;
-
-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.IFormat;
-import org.example.join.domain.Table;
-import org.example.join.sql.SqlContext;
-
-import java.util.StringJoiner;
-
-public class SqlUtil {
-
-    public static String getTableDelFlag(Table table) {
-        TableInfo tableInfo = TableInfoHelper.getTableInfo(table.getName());
-        if (!tableInfo.isWithLogicDelete()) {
-            return null;
-        }
-
-        TableFieldInfo logicDeleteFieldInfo = tableInfo.getLogicDeleteFieldInfo();
-        return logicDeleteFieldInfo.getColumn();
-    }
-
-    public static void putValue(StringJoiner joiner, Object value) {
-        if (value instanceof IFormat iFormat) {
-            joiner.add(iFormat.toSql());
-        } else {
-            String mapKey = SqlContext.getParamKey();
-            joiner.add(StringPool.HASH_LEFT_BRACE + mapKey + StringPool.RIGHT_BRACE);
-            SqlContext.getParamMap().put(mapKey, value);
-        }
-    }
-
-}