diff --git a/src/main/java/com/github/yulichang/wrapper/enums/BaseFuncEnum.java b/src/main/java/com/github/yulichang/wrapper/enums/BaseFuncEnum.java index 325d9b4..3f04735 100644 --- a/src/main/java/com/github/yulichang/wrapper/enums/BaseFuncEnum.java +++ b/src/main/java/com/github/yulichang/wrapper/enums/BaseFuncEnum.java @@ -7,5 +7,8 @@ package com.github.yulichang.wrapper.enums; */ public interface BaseFuncEnum { + /** + * 获取sql 片段 + */ String getSql(); } diff --git a/src/main/java/com/github/yulichang/wrapper/enums/DefaultFuncEnum.java b/src/main/java/com/github/yulichang/wrapper/enums/DefaultFuncEnum.java index b0c81ea..ac70fdf 100644 --- a/src/main/java/com/github/yulichang/wrapper/enums/DefaultFuncEnum.java +++ b/src/main/java/com/github/yulichang/wrapper/enums/DefaultFuncEnum.java @@ -2,10 +2,12 @@ package com.github.yulichang.wrapper.enums; /** * 常用的sql函数枚举 默认实现 - * 可以自己实现 {@link BaseFuncEnum} 自定义函数 + * 可以自己实现接口 {@link BaseFuncEnum} 自定义函数 * 目前支持一个占位符,不支持多个%s *
* 只例举几个通用的,其他函数 first() last() len() ucase() lcase() 等 或者数据库自定义函数请自行扩展 + *
mpj的初衷是只针对简单的连表查询,而非相对复杂的查询, + *
建议慎用,复杂的查询还是推荐写sql
*
* @author yulichang
*/
diff --git a/src/main/java/com/github/yulichang/wrapper/interfaces/Query.java b/src/main/java/com/github/yulichang/wrapper/interfaces/Query.java
index 3ca76c2..e68edd6 100644
--- a/src/main/java/com/github/yulichang/wrapper/interfaces/Query.java
+++ b/src/main/java/com/github/yulichang/wrapper/interfaces/Query.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.toolkit.LambdaUtils;
import com.github.yulichang.wrapper.enums.BaseFuncEnum;
+import com.github.yulichang.wrapper.enums.DefaultFuncEnum;
import java.io.Serializable;
import java.util.function.Predicate;
@@ -13,6 +14,7 @@ import java.util.function.Predicate;
*
* @author yulichang
*/
+@SuppressWarnings("unused")
public interface Query Children selectAs(SFunction column, String alias);
- default Children selectFunc(BaseFuncEnum funcEnum, SFunction column) {
- return selectFunc(funcEnum, column, column);
- }
-
-
- default Children selectFunc(BaseFuncEnum funcEnum, SFunction column, SFunction Children selectFunc(BaseFuncEnum funcEnum, SFunction column, String alias);
+ default Children selectFunc(BaseFuncEnum funcEnum, SFunction column) {
+ return selectFunc(funcEnum, column, column);
+ }
+
+
+ default Children selectFunc(BaseFuncEnum funcEnum, SFunction column, SFunction Children selectSum(SFunction column) {
+ return selectFunc(DefaultFuncEnum.SUM, column);
+ }
+
+ default Children selectSum(SFunction column, SFunction Children selectCount(SFunction column) {
+ return selectFunc(DefaultFuncEnum.COUNT, column);
+ }
+
+ default Children selectCount(SFunction column, SFunction Children selectMAX(SFunction column) {
+ return selectFunc(DefaultFuncEnum.MAX, column);
+ }
+
+ default Children selectMAX(SFunction column, SFunction Children selectMIN(SFunction column) {
+ return selectFunc(DefaultFuncEnum.MIN, column);
+ }
+
+ default Children selectMIN(SFunction column, SFunction Children selectAVG(SFunction column) {
+ return selectFunc(DefaultFuncEnum.AVG, column);
+ }
+
+ default Children selectAVG(SFunction column, SFunction Children selectLEN(SFunction column) {
+ return selectFunc(DefaultFuncEnum.LEN, column);
+ }
+
+ default Children selectLEN(SFunction column, SFunction