|
@@ -43,6 +43,67 @@ public class Fields<T> {
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
+ public Fields<T> distinct() {
|
|
|
+ sql.distinct = true;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> max(SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("MAX(" + FieldUtil.getSqlFieldName(sql.getTableAlias(meta), meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> max(String alias, SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("MAX(" + FieldUtil.getSqlFieldName(alias, meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> min(SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("MIN(" + FieldUtil.getSqlFieldName(sql.getTableAlias(meta), meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> min(String alias, SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("MIN(" + FieldUtil.getSqlFieldName(alias, meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> count(SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("COUNT(" + FieldUtil.getSqlFieldName(sql.getTableAlias(meta), meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> count(String alias, SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("COUNT(" + FieldUtil.getSqlFieldName(alias, meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> sum(SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("SUM(" + FieldUtil.getSqlFieldName(sql.getTableAlias(meta), meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ public <S, V> Fields<T> sum(String alias, SFunction<S, V> function, SFunction<T, ?> asFunction) {
|
|
|
+ String as = PropertyNamer.methodToProperty(LambdaUtils.extract(asFunction).getImplMethodName());
|
|
|
+ LambdaMeta meta = LambdaUtils.extract(function);
|
|
|
+ sql.fieldList.add("SUM(" + FieldUtil.getSqlFieldName(alias, meta) + ")" + StringPool.SPACE + as);
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
public Fields<T> selectAll(Class<?> cls) {
|
|
|
return selectAll(sql.getTableAlias(cls), cls);
|
|
|
}
|