From 3d13c1af36d1b0b95258abde8259082b5e9afaea Mon Sep 17 00:00:00 2001 From: admin <570810310@qq.com> Date: Wed, 2 Jun 2021 13:32:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=9A=E5=90=88=E8=A1=8C=E6=95=B0=E9=87=8D?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yulichang/wrapper/enums/BaseFuncEnum.java | 3 + .../wrapper/enums/DefaultFuncEnum.java | 4 +- .../yulichang/wrapper/interfaces/Query.java | 136 ++++++++++++++++-- 3 files changed, 133 insertions(+), 10 deletions(-) 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 extends Serializable { /** @@ -47,15 +49,6 @@ public interface Query extends Serializable { 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 alias) { - return selectFunc(funcEnum, column, LambdaUtils.getName(alias)); - } - /** * 聚合函数查询 * @@ -65,6 +58,15 @@ public interface Query extends Serializable { */ 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 alias) { + return selectFunc(funcEnum, column, LambdaUtils.getName(alias)); + } + default Children selectFunc(BaseFuncEnum funcEnum, Object column, SFunction alias) { return selectFunc(funcEnum, column, LambdaUtils.getName(alias)); } @@ -75,4 +77,120 @@ public interface Query extends Serializable { * select sql 片段 */ String getSqlSelect(); + + /* 默认聚合函数扩展 */ + + /** + * SUM() + */ + default Children selectSum(SFunction column) { + return selectFunc(DefaultFuncEnum.SUM, column); + } + + default Children selectSum(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.SUM, column, alias); + } + + default Children selectSum(Object column, String alias) { + return selectFunc(DefaultFuncEnum.SUM, column, alias); + } + + default Children selectSum(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.SUM, column, alias); + } + + /** + * COUNT() + */ + default Children selectCount(SFunction column) { + return selectFunc(DefaultFuncEnum.COUNT, column); + } + + default Children selectCount(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.COUNT, column, alias); + } + + default Children selectCount(Object column, String alias) { + return selectFunc(DefaultFuncEnum.COUNT, column, alias); + } + + default Children selectCount(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.COUNT, column, alias); + } + + /** + * MAX() + */ + default Children selectMAX(SFunction column) { + return selectFunc(DefaultFuncEnum.MAX, column); + } + + default Children selectMAX(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.MAX, column, alias); + } + + default Children selectMAX(Object column, String alias) { + return selectFunc(DefaultFuncEnum.MAX, column, alias); + } + + default Children selectMAX(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.MAX, column, alias); + } + + /** + * MIN() + */ + default Children selectMIN(SFunction column) { + return selectFunc(DefaultFuncEnum.MIN, column); + } + + default Children selectMIN(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.MIN, column, alias); + } + + default Children selectMIN(Object column, String alias) { + return selectFunc(DefaultFuncEnum.MIN, column, alias); + } + + default Children selectMIN(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.MIN, column, alias); + } + + /** + * MIN() + */ + default Children selectAVG(SFunction column) { + return selectFunc(DefaultFuncEnum.AVG, column); + } + + default Children selectAVG(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.AVG, column, alias); + } + + default Children selectAVG(Object column, String alias) { + return selectFunc(DefaultFuncEnum.AVG, column, alias); + } + + default Children selectAVG(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.AVG, column, alias); + } + + /** + * LEN() + */ + default Children selectLEN(SFunction column) { + return selectFunc(DefaultFuncEnum.LEN, column); + } + + default Children selectLEN(Object column, SFunction alias) { + return selectFunc(DefaultFuncEnum.LEN, column, alias); + } + + default Children selectLEN(Object column, String alias) { + return selectFunc(DefaultFuncEnum.LEN, column, alias); + } + + default Children selectLEN(SFunction column, SFunction alias) { + return selectFunc(DefaultFuncEnum.LEN, column, alias); + } }