
com.easy.query.core.basic.api.select.extension.queryable2.Aggregatable2 Maven / Gradle / Ivy
package com.easy.query.core.basic.api.select.extension.queryable2;
import com.easy.query.core.common.tuple.Tuple2;
import com.easy.query.core.expression.lambda.SQLExpression1;
import com.easy.query.core.expression.lambda.SQLExpression2;
import com.easy.query.core.expression.parser.core.base.ColumnResultSelector;
import java.math.BigDecimal;
/**
* create time 2023/8/15 21:54
* 文件说明
*
* @author xuejiaming
*/
public interface Aggregatable2 {
/**
* 防止溢出
*
* @param columnSelectorExpression
* @param
* @return
*/
default BigDecimal sumBigDecimalOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return sumBigDecimalOrDefault(columnSelectorExpression, null);
}
BigDecimal sumBigDecimalOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, BigDecimal def);
default TMember sumOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return sumOrDefault(columnSelectorExpression, null);
}
TMember sumOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, TMember def);
default TMember maxOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return maxOrDefault(columnSelectorExpression, null);
}
TMember maxOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, TMember def);
default TMember minOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return minOrDefault(columnSelectorExpression, null);
}
TMember minOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, TMember def);
default Double avgOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return avgOrDefault(columnSelectorExpression, null, Double.class);
}
default BigDecimal avgBigDecimalOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return avgOrDefault(columnSelectorExpression, null, BigDecimal.class);
}
default Float avgFloatOrNull(SQLExpression2, ColumnResultSelector> columnSelectorExpression) {
return avgOrDefault(columnSelectorExpression, null, Float.class);
}
default Double avgOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, Double def) {
return avgOrDefault(columnSelectorExpression, def, Double.class);
}
default BigDecimal avgBigDecimalOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, BigDecimal def) {
return avgOrDefault(columnSelectorExpression, def, BigDecimal.class);
}
default Float avgFloatOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, Float def) {
return avgOrDefault(columnSelectorExpression, def, Float.class);
}
TResult avgOrDefault(SQLExpression2, ColumnResultSelector> columnSelectorExpression, TResult def, Class resultClass);
/**
* 防止溢出
*
* @param columnSelectorExpression
* @param
* @return
*/
default BigDecimal sumBigDecimalOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return sumBigDecimalOrDefaultMerge(columnSelectorExpression, null);
}
default BigDecimal sumBigDecimalOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, BigDecimal def){
return sumBigDecimalOrDefault((t1, t2)->{
columnSelectorExpression.apply(new Tuple2<>(t1, t2));
},def);
}
default TMember sumOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return sumOrDefaultMerge(columnSelectorExpression, null);
}
default TMember sumOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, TMember def){
return sumOrDefault((t1, t2)->{
columnSelectorExpression.apply(new Tuple2<>(t1, t2));
},def);
}
default TMember maxOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return maxOrDefaultMerge(columnSelectorExpression, null);
}
default TMember maxOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, TMember def){
return maxOrDefault((t1, t2)->{
columnSelectorExpression.apply(new Tuple2<>(t1, t2));
},def);
}
default TMember minOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return minOrDefaultMerge(columnSelectorExpression, null);
}
default TMember minOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, TMember def){
return minOrDefault((t1, t2)->{
columnSelectorExpression.apply(new Tuple2<>(t1, t2));
},def);
}
default Double avgOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return avgOrDefaultMerge(columnSelectorExpression, null, Double.class);
}
default BigDecimal avgBigDecimalOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return avgOrDefaultMerge(columnSelectorExpression, null, BigDecimal.class);
}
default Float avgFloatOrNullMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression) {
return avgOrDefaultMerge(columnSelectorExpression, null, Float.class);
}
default Double avgOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, Double def) {
return avgOrDefaultMerge(columnSelectorExpression, def, Double.class);
}
default BigDecimal avgBigDecimalOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, BigDecimal def) {
return avgOrDefaultMerge(columnSelectorExpression, def, BigDecimal.class);
}
default Float avgFloatOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, Float def) {
return avgOrDefaultMerge(columnSelectorExpression, def, Float.class);
}
default TResult avgOrDefaultMerge(SQLExpression1, ColumnResultSelector>> columnSelectorExpression, TResult def, Class resultClass){
return avgOrDefault((t1, t2)->{
columnSelectorExpression.apply(new Tuple2<>(t1, t2));
},def,resultClass);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy