24282 1 жил өмнө
parent
commit
5c4793afd6

+ 28 - 21
my-test/src/main/java/org/example/join/model/DefaultFunction.java

@@ -5,145 +5,152 @@ import org.example.join.sql.SqlConstant;
 /**
 /**
  * SQL 函数。
  * SQL 函数。
  */
  */
-public class DefaultFunction {
+public interface DefaultFunction {
 
 
     /**
     /**
      * 绝对值
      * 绝对值
      */
      */
-    public static QueryFunction abs(Object obj) {
+    default QueryFunction abs(Object obj) {
         return new QueryFunction(SqlConstant.ABS, obj);
         return new QueryFunction(SqlConstant.ABS, obj);
     }
     }
 
 
     /**
     /**
      * 平均值
      * 平均值
      */
      */
-    public static QueryFunction avg(Object obj) {
+    default QueryFunction avg(Object obj) {
         return new QueryFunction(SqlConstant.AVG, obj);
         return new QueryFunction(SqlConstant.AVG, obj);
     }
     }
 
 
     /**
     /**
      * 数量
      * 数量
      */
      */
-    public static QueryFunction count(Object obj) {
+    default QueryFunction count(Object obj) {
         return new QueryFunction(SqlConstant.COUNT, obj);
         return new QueryFunction(SqlConstant.COUNT, obj);
     }
     }
 
 
     /**
     /**
      * 将字符串 s1,s2 等多个字符串合并为一个字符串。
      * 将字符串 s1,s2 等多个字符串合并为一个字符串。
      */
      */
-    public static QueryFunction concat(Object... objs) {
+    default QueryFunction concat(Object... objs) {
         return new QueryFunction(SqlConstant.CONCAT, objs);
         return new QueryFunction(SqlConstant.CONCAT, objs);
     }
     }
 
 
     /**
     /**
+     * 分组,拼接
+     */
+    default QueryFunction groupConcat(Object... objs) {
+        return new QueryFunction(SqlConstant.GROUP_CONCAT, objs);
+    }
+
+    /**
      * 计算两个时间相差天数
      * 计算两个时间相差天数
      */
      */
-    public static QueryFunction dateDiff(Object obj1, Object obj2) {
+    default QueryFunction dateDiff(Object obj1, Object obj2) {
         return new QueryFunction(SqlConstant.DATEDIFF, obj1, obj2);
         return new QueryFunction(SqlConstant.DATEDIFF, obj1, obj2);
     }
     }
 
 
     /**
     /**
      * 日期格式
      * 日期格式
      */
      */
-    public static QueryFunction dateFormat(Object obj1, Object obj2) {
+    default QueryFunction dateFormat(Object obj1, Object obj2) {
         return new QueryFunction(SqlConstant.DATE_FORMAT, obj1, obj2);
         return new QueryFunction(SqlConstant.DATE_FORMAT, obj1, obj2);
     }
     }
 
 
     /**
     /**
      * 判断处理
      * 判断处理
      */
      */
-    public static QueryFunction _if(Object obj1, Object obj2, Object obj3) {
+    default QueryFunction _if(Object obj1, Object obj2, Object obj3) {
         return new QueryFunction(SqlConstant.IF, obj1, obj2, obj3);
         return new QueryFunction(SqlConstant.IF, obj1, obj2, obj3);
     }
     }
 
 
     /**
     /**
      * 判断值是否为null
      * 判断值是否为null
      */
      */
-    public static QueryFunction ifNull(Object obj1, Object obj2) {
+    default QueryFunction ifNull(Object obj1, Object obj2) {
         return new QueryFunction(SqlConstant.IFNULL, obj1, obj2);
         return new QueryFunction(SqlConstant.IFNULL, obj1, obj2);
     }
     }
 
 
     /**
     /**
      * 最大值
      * 最大值
      */
      */
-    public static QueryFunction max(IQueryColumn queryColumn) {
+    default QueryFunction max(IQueryColumn queryColumn) {
         return new QueryFunction(SqlConstant.MAX, queryColumn);
         return new QueryFunction(SqlConstant.MAX, queryColumn);
     }
     }
 
 
     /**
     /**
      * 最小值
      * 最小值
      */
      */
-    public static QueryFunction min(IQueryColumn queryColumn) {
+    default QueryFunction min(IQueryColumn queryColumn) {
         return new QueryFunction(SqlConstant.MIN, queryColumn);
         return new QueryFunction(SqlConstant.MIN, queryColumn);
     }
     }
 
 
     /**
     /**
      * 当前系统时间
      * 当前系统时间
      */
      */
-    public static QueryFunction now() {
+    default QueryFunction now() {
         return new QueryFunction(SqlConstant.NOW);
         return new QueryFunction(SqlConstant.NOW);
     }
     }
 
 
     /**
     /**
      * 替换字符串
      * 替换字符串
      */
      */
-    public static QueryFunction replace(IQueryColumn queryColumn, Object obj1, Object obj2) {
+    default QueryFunction replace(IQueryColumn queryColumn, Object obj1, Object obj2) {
         return new QueryFunction(SqlConstant.REPLACE, queryColumn, obj1, obj2);
         return new QueryFunction(SqlConstant.REPLACE, queryColumn, obj1, obj2);
     }
     }
 
 
     /**
     /**
      * 四舍五入
      * 四舍五入
      */
      */
-    public static QueryFunction round(IQueryColumn queryColumn, Number number) {
+    default QueryFunction round(IQueryColumn queryColumn, Number number) {
         return new QueryFunction(SqlConstant.ROUND, queryColumn, number);
         return new QueryFunction(SqlConstant.ROUND, queryColumn, number);
     }
     }
 
 
     /**
     /**
      * 截取字符串
      * 截取字符串
      */
      */
-    public static QueryFunction substr(IQueryColumn queryColumn, int position) {
+    default QueryFunction substr(IQueryColumn queryColumn, int position) {
         return new QueryFunction(SqlConstant.SUBSTR, queryColumn, position);
         return new QueryFunction(SqlConstant.SUBSTR, queryColumn, position);
     }
     }
 
 
     /**
     /**
      * 截取字符串
      * 截取字符串
      */
      */
-    public static QueryFunction substr(IQueryColumn queryColumn, int position, int length) {
+    default QueryFunction substr(IQueryColumn queryColumn, int position, int length) {
         return new QueryFunction(SqlConstant.SUBSTR, queryColumn, position, length);
         return new QueryFunction(SqlConstant.SUBSTR, queryColumn, position, length);
     }
     }
 
 
     /**
     /**
      * 获取字符个数
      * 获取字符个数
      */
      */
-    public static QueryFunction length(Object obj) {
+    default QueryFunction length(Object obj) {
         return new QueryFunction(SqlConstant.LENGTH, obj);
         return new QueryFunction(SqlConstant.LENGTH, obj);
     }
     }
 
 
     /**
     /**
      * 获取年
      * 获取年
      */
      */
-    public static QueryFunction year(Object obj) {
+    default QueryFunction year(Object obj) {
         return new QueryFunction(SqlConstant.YEAR, obj);
         return new QueryFunction(SqlConstant.YEAR, obj);
     }
     }
 
 
     /**
     /**
      * 获取月
      * 获取月
      */
      */
-    public static QueryFunction month(Object obj) {
+    default QueryFunction month(Object obj) {
         return new QueryFunction(SqlConstant.MONTH, obj);
         return new QueryFunction(SqlConstant.MONTH, obj);
     }
     }
 
 
     /**
     /**
      * 获取日
      * 获取日
      */
      */
-    public static QueryFunction day(Object obj) {
+    default QueryFunction day(Object obj) {
         return new QueryFunction(SqlConstant.DAY, obj);
         return new QueryFunction(SqlConstant.DAY, obj);
     }
     }
 
 
     /**
     /**
      * 获取小时
      * 获取小时
      */
      */
-    public static QueryFunction hour(Object obj) {
+    default QueryFunction hour(Object obj) {
         return new QueryFunction(SqlConstant.HOUR, obj);
         return new QueryFunction(SqlConstant.HOUR, obj);
     }
     }
 
 

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

@@ -62,6 +62,7 @@ public interface SqlConstant {
     String AVG = "AVG";
     String AVG = "AVG";
     String COUNT = "COUNT";
     String COUNT = "COUNT";
     String CONCAT = "CONCAT";
     String CONCAT = "CONCAT";
+    String GROUP_CONCAT = "GROUP_CONCAT";
     String DATEDIFF = "DATEDIFF";
     String DATEDIFF = "DATEDIFF";
     String DATE_FORMAT = "DATE_FORMAT";
     String DATE_FORMAT = "DATE_FORMAT";
     String IF = "IF";
     String IF = "IF";

+ 19 - 9
my-test/src/test/java/MySpringBootTest.java

@@ -1,6 +1,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import org.dromara.system.domain.SysDept;
+import lombok.Data;
 import org.example.DromaraApplication;
 import org.example.DromaraApplication;
+import org.example.join.model.DefaultFunction;
 import org.example.join.model.QueryColumn;
 import org.example.join.model.QueryColumn;
 import org.example.join.model.QueryColumnField;
 import org.example.join.model.QueryColumnField;
 import org.example.join.model.QueryColumnFields;
 import org.example.join.model.QueryColumnFields;
@@ -16,7 +17,7 @@ import java.util.List;
 
 
 @RunWith(SpringRunner.class)
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = DromaraApplication.class)
 @SpringBootTest(classes = DromaraApplication.class)
-public class MySpringBootTest {
+public class MySpringBootTest implements DefaultFunction {
 
 
     public static final Table sys_dept = new Table("sys_dept");
     public static final Table sys_dept = new Table("sys_dept");
     public final QueryColumnField dept_id = sys_dept.field("dept_id");
     public final QueryColumnField dept_id = sys_dept.field("dept_id");
@@ -44,15 +45,15 @@ public class MySpringBootTest {
                 .from(sys_dept)
                 .from(sys_dept)
                 .tableAs(sys_dept);
                 .tableAs(sys_dept);
 
 
-        List<SysDept> list = Sql.create()
+        List<TestEntity> list = Sql.create()
                 //.logic()
                 //.logic()
                 //.distinct()
                 //.distinct()
                 .select(
                 .select(
                         dept_id.as("aaa"),
                         dept_id.as("aaa"),
-                        childTable.field(tenant_id),
-                        childTable.field("status"),
-                        Sql.create().select(dept_id).from(sys_dept).limit(1).as("ccc"),
-                        new QueryColumn("{0}", "ancestors").as("sss")
+                        childTable.field(tenant_id).as("bbb"),
+                        childTable.field("status").as("ccc"),
+                        Sql.create().select(groupConcat(new QueryColumn("dept_id order by dept_id asc")).as("deptGroup")).from(sys_dept).as("ddd"),
+                        new QueryColumn("{0}", "ancestors").as("eee")
                 )
                 )
                 .from(childTable)
                 .from(childTable)
                 .leftJoin(sys_user).on(childTable.field(dept_id).eq(user_id))
                 .leftJoin(sys_user).on(childTable.field(dept_id).eq(user_id))
@@ -60,11 +61,20 @@ public class MySpringBootTest {
                         dept_id.in(Sql.create().select(dept_id).from(sys_dept)),
                         dept_id.in(Sql.create().select(dept_id).from(sys_dept)),
                         Sql.create().select(dept_id).from(sys_dept).limit(1).eq(100)
                         Sql.create().select(dept_id).from(sys_dept).limit(1).eq(100)
                 )
                 )
-                .orderBy(new QueryColumn("aaa").asc())
-                .list(SysDept.class);
+                .orderBy(new QueryColumn("aaa").desc())
+                .list(TestEntity.class);
 
 
         System.out.println(JSONObject.toJSONString(list));
         System.out.println(JSONObject.toJSONString(list));
 
 
     }
     }
 
 
+    @Data
+    static class TestEntity {
+        String aaa;
+        String bbb;
+        String ccc;
+        String ddd;
+        String eee;
+    }
+
 }
 }