|
@@ -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;
|
|
|
+ }
|
|
|
+
|
|
|
}
|