24282 1 year ago
parent
commit
79f69c1ae9

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

@@ -42,7 +42,9 @@ public class QueryCondition implements IFormat {
     public String toSql() {
 
         String connectStr = queryConditionConnectList.stream().map(IFormat::toSql).collect(Collectors.joining());
+
         if (ObjectUtil.isEmpty(value)) {
+
             if (ObjectUtil.isEmpty(connectStr)) {
                 return StringPool.EMPTY;
             }
@@ -72,6 +74,21 @@ public class QueryCondition implements IFormat {
                 joiner.add(logic);
                 SqlUtil.putValue(joiner, value);
             }
+            case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
+                joiner.add(logic);
+                joiner.add("concat('%',");
+                SqlUtil.putValue(joiner, value);
+                joiner.add(",'%')");
+            }
+            case SqlConstant.IN, SqlConstant.NOT_IN -> {
+                joiner.add(logic);
+                List<Object> inList = new ArrayList<>((Collection<?>) value);
+                joiner.add("(");
+                for (int i = 0; i < inList.size(); i++) {
+                    SqlUtil.putValue(joiner, inList.get(i));
+                    joiner.add(inList.size() == i + 1 ? ")" : ",");
+                }
+            }
             case SqlConstant.BETWEEN, SqlConstant.NOT_BETWEEN -> {
                 joiner.add(logic);
                 Object[] valueObj = (Object[]) value;
@@ -79,34 +96,19 @@ public class QueryCondition implements IFormat {
                 joiner.add(SqlConstant.AND);
                 SqlUtil.putValue(joiner, valueObj[1]);
             }
-            case SqlConstant.LIKE, SqlConstant.NOT_LIKE -> {
-                joiner.add(logic);
-                joiner.add("concat('%',");
-                SqlUtil.putValue(joiner, value);
-                joiner.add(",'%')");
-            }
             case SqlConstant.LIKE_LEFT, SqlConstant.NOT_LIKE_LEFT -> {
-                joiner.add(SqlConstant.LIKE);
+                joiner.add(logic.equals(SqlConstant.LIKE_LEFT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
                 joiner.add("concat('%',");
                 SqlUtil.putValue(joiner, value);
                 joiner.add(")");
             }
             case SqlConstant.LIKE_RIGHT, SqlConstant.NOT_LIKE_RIGHT -> {
-                joiner.add(SqlConstant.LIKE);
+                joiner.add(logic.equals(SqlConstant.LIKE_RIGHT) ? SqlConstant.LIKE : SqlConstant.NOT_LIKE);
                 joiner.add("concat(");
                 SqlUtil.putValue(joiner, value);
                 joiner.add(",'%')");
             }
             case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
-            case SqlConstant.IN, SqlConstant.NOT_IN -> {
-                joiner.add(logic);
-                List<Object> inList = new ArrayList<>((Collection<?>) value);
-                joiner.add("(");
-                for (int i = 0; i < inList.size(); i++) {
-                    SqlUtil.putValue(joiner, inList.get(i));
-                    joiner.add(inList.size() == i + 1 ? ")" : ",");
-                }
-            }
             default -> throw new IllegalArgumentException("未知方法");
         }
 

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

@@ -40,18 +40,18 @@ public interface SqlConstant {
     String LT = " < ";
     String GE = " >= ";
     String LE = " <= ";
-    String BETWEEN = " between ";
-    String NOT_BETWEEN = " not between ";
     String LIKE = " like ";
     String NOT_LIKE = " not like ";
+    String IN = " in ";
+    String NOT_IN = " not in ";
+    String BETWEEN = " between ";
+    String NOT_BETWEEN = " not between ";
     String LIKE_LEFT = " like left ";
     String NOT_LIKE_LEFT = " not like left ";
     String LIKE_RIGHT = " like right ";
     String NOT_LIKE_RIGHT = " not like right ";
     String IS_NULL = " is null";
     String IS_NOT_NULL = " is not null";
-    String IN = " in ";
-    String NOT_IN = " not in ";
 
     /**
      * 函数关键字