24282 1 rok pred
rodič
commit
28a2832907

+ 21 - 0
my-test/src/main/java/org/example/join/model/IQueryColumn.java

@@ -1,5 +1,26 @@
 package org.example.join.model;
 
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
+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;
+
 public interface IQueryColumn extends IFormat {
 
+    static IQueryColumn create(Object obj) {
+        return obj::toString;
+    }
+
+    static IQueryColumn create(Object obj, String alias) {
+        return () -> obj.toString() + StringPool.SPACE + alias;
+    }
+
+    static <T> IQueryColumn create(Object obj, SFunction<T, ?> function) {
+        LambdaMeta meta = LambdaUtils.extract(function);
+        String alias = StrUtil.toUnderlineCase(PropertyNamer.methodToProperty(meta.getImplMethodName()));
+        return () -> obj.toString() + StringPool.SPACE + alias;
+    }
+
 }

+ 4 - 1
my-test/src/test/java/MySpringBootTest.java

@@ -1,6 +1,7 @@
 import com.alibaba.fastjson.JSONObject;
 import org.dromara.system.domain.SysDept;
 import org.example.DromaraApplication;
+import org.example.join.model.IQueryColumn;
 import org.example.join.model.QueryColumn;
 import org.example.join.model.Table;
 import org.example.join.model.TableSublist;
@@ -37,7 +38,8 @@ public class MySpringBootTest {
                 .select(
                         dept_id,
                         tenant_id,
-                        status
+                        status,
+                        ancestors
                 )
                 .from(sys_dept)
                 .tableAs(sys_dept);
@@ -49,6 +51,7 @@ public class MySpringBootTest {
                         dept_id,
                         childTable.field(tenant_id),
                         childTable.field("status"),
+                        IQueryColumn.create("sys_dept.ancestors", "ancestors"),
                         Sql.create().select(dept_id).from(sys_dept).limit(1).as("ccc")
                 )
                 .from(childTable)