24282 1 năm trước cách đây
mục cha
commit
6bdc7e46b9

+ 24 - 0
my-test/src/main/java/org/example/join/domain/QueryColumn.java

@@ -11,6 +11,8 @@ import org.example.join.util.SqlConstant;
 import org.example.join.util.SqlUtil;
 
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.StringJoiner;
@@ -178,6 +180,28 @@ public class QueryColumn implements IFormat, IQueryColumn {
         return new QueryCondition(this, SqlConstant.IS_NOT_NULL, null);
     }
 
+    public QueryCondition in(Collection<?> coll) {
+        return new QueryCondition(this, SqlConstant.IN, coll);
+    }
+
+    public QueryCondition in(Object... obj) {
+        if (ObjectUtil.isEmpty(obj)) {
+            return new QueryCondition(this, SqlConstant.IN, null);
+        }
+        return new QueryCondition(this, SqlConstant.IN, Arrays.asList(obj));
+    }
+
+    public QueryCondition notIn(Collection<?> coll) {
+        return new QueryCondition(this, SqlConstant.NOT_IN, coll);
+    }
+
+    public QueryCondition notIn(Object... obj) {
+        if (ObjectUtil.isEmpty(obj)) {
+            return new QueryCondition(this, SqlConstant.NOT_IN, null);
+        }
+        return new QueryCondition(this, SqlConstant.NOT_IN, Arrays.asList(obj));
+    }
+
     private QueryColumn copy() {
         return new QueryColumn(this.table, this.name, new ArrayList<>(this.queryColumnComputeList));
     }

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import org.example.join.util.SqlConstant;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.StringJoiner;
@@ -116,7 +117,21 @@ public class QueryCondition implements IFormat {
                     joiner.add(",'%')");
                 }
                 case SqlConstant.IS_NULL, SqlConstant.IS_NOT_NULL -> joiner.add(logic);
-
+                case SqlConstant.IN, SqlConstant.NOT_IN -> {
+                    joiner.add(logic);
+                    Collection<?> inValue = (Collection<?>) value;
+                    int size = inValue.size();
+                    Object[] array = inValue.toArray();
+                    joiner.add("(");
+                    for (int i = 0; i < size; i++) {
+                        putValue(tableAliasMap, paramMap, joiner, array[i]);
+                        if (i == size - 1) {
+                            joiner.add(")");
+                        } else {
+                            joiner.add(",");
+                        }
+                    }
+                }
                 default -> {
                     joiner.add(logic);
                     putParam(paramMap, joiner, value);

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

@@ -38,5 +38,7 @@ public interface SqlConstant {
     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 ";
 
 }

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

@@ -1,10 +1,13 @@
+import com.alibaba.fastjson.JSONObject;
 import org.dromara.system.domain.SysDept;
+import org.dromara.system.service.ISysUserService;
 import org.example.DromaraApplication;
 import org.example.join.domain.QueryColumn;
 import org.example.join.domain.Table;
 import org.example.join.sql.Sql;
-import org.junit.jupiter.api.Test;
+import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
@@ -16,35 +19,38 @@ import java.util.List;
 public class MySpringBootTest {
 
     public static final Table sys_dept = new Table("sys_dept");
-    public static final Table sys_user = new Table("sys_user");
     public final QueryColumn dept_id = new QueryColumn(sys_dept, "dept_id");
     public final QueryColumn tenant_id = new QueryColumn(sys_dept, "tenant_id");
     public final QueryColumn parent_id = new QueryColumn(sys_dept, "parent_id");
     public final QueryColumn ancestors = new QueryColumn(sys_dept, "ancestors");
-    public final QueryColumn create_by = new QueryColumn(sys_dept, "create_by");
+
+    public static final Table sys_user = new Table("sys_user");
     public final QueryColumn user_id = new QueryColumn(sys_user, "user_id");
     public final QueryColumn user_name = new QueryColumn(sys_user, "user_name");
     public final QueryColumn nick_name = new QueryColumn(sys_user, "nick_name");
     public final QueryColumn sex = new QueryColumn(sys_user, "sex");
+    public final QueryColumn create_by = new QueryColumn(sys_user, "create_by");
+
+    @Autowired
+    private ISysUserService service;
 
     @Test
     public void testCache() {
 
-        List<SysDept> list = Sql.create(SysDept.class).select(
+        List<SysDept> list = Sql.create(SysDept.class)
+                .select(
                         dept_id,
-                        tenant_id,
-                        dept_id.add(tenant_id.subtract(parent_id.divide(222)
-                                .multiply(parent_id).add(1)).add(parent_id)).as(SysDept::getEmail)
+                        tenant_id
                 )
                 .from(sys_dept)
-                .leftJoin(sys_user).on(user_id.eq(dept_id), user_id.eq("8779"))
-                .leftJoin(sys_user.as("a")).on(user_id.eq(dept_id), user_id.eq("8779"))
+                .leftJoin(sys_user).on(user_id.eq(dept_id))
                 .where(
-                        create_by.eq(user_id)
+                        create_by.gt(98),
+                        create_by.lt(98)
                 )
                 .list();
 
-        System.out.println();
+        System.out.println(JSONObject.toJSONString(list));
 
     }