优化函数

This commit is contained in:
yulichang 2021-06-25 13:44:37 +08:00
parent 1d0b6fd434
commit e4c485e335
2 changed files with 147 additions and 71 deletions

View File

@ -139,14 +139,18 @@ public class MPJLambdaWrapper<T> extends MPJAbstractLambdaWrapper<T, MPJLambdaWr
return typedThis;
}
public <S> MPJLambdaWrapper<T> selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, String alias) {
selectColumns.add(SelectColumn.of(LambdaUtils.getEntityClass(column), getCache(column).getColumn(), alias, funcEnum));
public <S> MPJLambdaWrapper<T> selectFunc(boolean condition, BaseFuncEnum funcEnum, SFunction<S, ?> column, String alias) {
if (condition) {
selectColumns.add(SelectColumn.of(LambdaUtils.getEntityClass(column), getCache(column).getColumn(), alias, funcEnum));
}
return typedThis;
}
@Override
public MPJLambdaWrapper<T> selectFunc(BaseFuncEnum funcEnum, Object column, String alias) {
selectColumns.add(SelectColumn.of(null, column.toString(), alias, funcEnum));
public MPJLambdaWrapper<T> selectFunc(boolean condition, BaseFuncEnum funcEnum, Object column, String alias) {
if (condition) {
selectColumns.add(SelectColumn.of(null, column.toString(), alias, funcEnum));
}
return typedThis;
}

View File

@ -51,32 +51,6 @@ public interface Query<Children> extends Serializable {
*/
<S> Children selectAs(SFunction<S, ?> column, String alias);
/**
* ignore
*/
<S> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, String alias);
/**
* ignore
*/
default <S> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column) {
return selectFunc(funcEnum, column, column);
}
/**
* ignore
*/
default <S, X> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(funcEnum, column, LambdaUtils.getName(alias));
}
/**
* ignore
*/
default <X> Children selectFunc(BaseFuncEnum funcEnum, Object column, SFunction<X, ?> alias) {
return selectFunc(funcEnum, column, LambdaUtils.getName(alias));
}
/**
* 聚合函数查询
*
@ -84,7 +58,41 @@ public interface Query<Children> extends Serializable {
* @param column 函数作用的字段
* @param alias 别名
*/
Children selectFunc(BaseFuncEnum funcEnum, Object column, String alias);
Children selectFunc(boolean condition, BaseFuncEnum funcEnum, Object column, String alias);
<S> Children selectFunc(boolean condition, BaseFuncEnum funcEnum, SFunction<S, ?> column, String alias);
default <S> Children selectFunc(BaseFuncEnum funcEnum, Object column, String alias) {
return selectFunc(true, funcEnum, column, alias);
}
default <S> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, String alias) {
return selectFunc(true, funcEnum, column, alias);
}
default <S, X> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(true, funcEnum, column, LambdaUtils.getName(alias));
}
default <S> Children selectFunc(BaseFuncEnum funcEnum, SFunction<S, ?> column) {
return selectFunc(true, funcEnum, column, column);
}
default <X> Children selectFunc(BaseFuncEnum funcEnum, Object column, SFunction<X, ?> alias) {
return selectFunc(true, funcEnum, column, LambdaUtils.getName(alias));
}
default <S, X> Children selectFunc(boolean condition, BaseFuncEnum funcEnum, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, funcEnum, column, LambdaUtils.getName(alias));
}
default <S> Children selectFunc(boolean condition, BaseFuncEnum funcEnum, SFunction<S, ?> column) {
return selectFunc(condition, funcEnum, column, column);
}
default <X> Children selectFunc(boolean condition, BaseFuncEnum funcEnum, Object column, SFunction<X, ?> alias) {
return selectFunc(condition, funcEnum, column, LambdaUtils.getName(alias));
}
/**
* 忽略查询字段
@ -119,18 +127,26 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.SUM, column);
}
default <X> Children selectSum(Object column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.SUM, column, alias);
}
default Children selectSum(Object column, String alias) {
return selectFunc(DefaultFuncEnum.SUM, column, alias);
}
default <S, X> Children selectSum(SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.SUM, column, alias);
}
default <S, X> Children selectSum(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.SUM, column, alias);
}
default <S> Children selectSum(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.SUM, column);
}
default <S, X> Children selectSum(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.SUM, column, alias);
}
default <S, X> Children selectSum(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.SUM, column, alias);
}
/**
* COUNT()
*/
@ -150,6 +166,30 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.COUNT, column, alias);
}
default <S, X> Children selectCount(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.COUNT, column, alias);
}
default <S> Children selectCount(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.COUNT, column);
}
default <X> Children selectCount(boolean condition, Object column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.COUNT, column, alias);
}
default Children selectCount(boolean condition, Object column, String alias) {
return selectFunc(condition, DefaultFuncEnum.COUNT, column, alias);
}
default <S, X> Children selectCount(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.COUNT, column, alias);
}
default <S, X> Children selectCount(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.COUNT, column, alias);
}
/**
* MAX()
*/
@ -157,18 +197,26 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.MAX, column);
}
default <X> Children selectMax(Object column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.MAX, column, alias);
}
default Children selectMax(Object column, String alias) {
return selectFunc(DefaultFuncEnum.MAX, column, alias);
}
default <S, X> Children selectMax(SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.MAX, column, alias);
}
default <S, X> Children selectMax(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.MAX, column, alias);
}
default <S> Children selectMax(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.MAX, column);
}
default <S, X> Children selectMax(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.MAX, column, alias);
}
default <S, X> Children selectMax(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.MAX, column, alias);
}
/**
* MIN()
*/
@ -176,18 +224,26 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.MIN, column);
}
default <X> Children selectMin(Object column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.MIN, column, alias);
}
default Children selectMin(Object column, String alias) {
return selectFunc(DefaultFuncEnum.MIN, column, alias);
}
default <S, X> Children selectMin(SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.MIN, column, alias);
}
default <S, X> Children selectMin(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.MIN, column, alias);
}
default <S> Children selectMin(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.MIN, column);
}
default <S, X> Children selectMin(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.MIN, column, alias);
}
default <S, X> Children selectMin(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.MIN, column, alias);
}
/**
* MIN()
*/
@ -195,18 +251,26 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.AVG, column);
}
default <X> Children selectAvg(Object column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.AVG, column, alias);
}
default Children selectAvg(Object column, String alias) {
return selectFunc(DefaultFuncEnum.AVG, column, alias);
}
default <S, X> Children selectAvg(SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.AVG, column, alias);
}
default <S, X> Children selectAvg(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.AVG, column, alias);
}
default <S> Children selectAvg(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.AVG, column);
}
default <S, X> Children selectAvg(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.AVG, column, alias);
}
default <S, X> Children selectAvg(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.AVG, column, alias);
}
/**
* LEN()
*/
@ -214,15 +278,23 @@ public interface Query<Children> extends Serializable {
return selectFunc(DefaultFuncEnum.LEN, column);
}
default <X> Children selectLen(Object column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.LEN, column, alias);
}
default Children selectLen(Object column, String alias) {
return selectFunc(DefaultFuncEnum.LEN, column, alias);
}
default <S, X> Children selectLen(SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(DefaultFuncEnum.LEN, column, alias);
}
default <S, X> Children selectLen(SFunction<S, ?> column, String alias) {
return selectFunc(DefaultFuncEnum.LEN, column, alias);
}
default <S> Children selectLen(boolean condition, SFunction<S, ?> column) {
return selectFunc(condition, DefaultFuncEnum.LEN, column);
}
default <S, X> Children selectLen(boolean condition, SFunction<S, ?> column, SFunction<X, ?> alias) {
return selectFunc(condition, DefaultFuncEnum.LEN, column, alias);
}
default <S, X> Children selectLen(boolean condition, SFunction<S, ?> column, String alias) {
return selectFunc(condition, DefaultFuncEnum.LEN, column, alias);
}
}