Skip to content

Commit 0f5f547

Browse files
committed
Initial conversion of aggregates to functions
1 parent e70ea18 commit 0f5f547

File tree

5 files changed

+52
-44
lines changed

5 files changed

+52
-44
lines changed

src/main/java/org/mybatis/dynamic/sql/SqlBuilder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -331,19 +331,19 @@ static CountDistinct countDistinct(BasicColumn column) {
331331
return CountDistinct.of(column);
332332
}
333333

334-
static Max max(BasicColumn column) {
334+
static <T> Max<T> max(BindableColumn<T> column) {
335335
return Max.of(column);
336336
}
337337

338-
static Min min(BasicColumn column) {
338+
static <T> Min<T> min(BindableColumn<T> column) {
339339
return Min.of(column);
340340
}
341341

342-
static Avg avg(BasicColumn column) {
342+
static <T> Avg<T> avg(BindableColumn<T> column) {
343343
return Avg.of(column);
344344
}
345345

346-
static Sum sum(BasicColumn column) {
346+
static <T> Sum<T> sum(BindableColumn<T> column) {
347347
return Sum.of(column);
348348
}
349349

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Avg.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.aggregate;
1717

18-
import org.mybatis.dynamic.sql.BasicColumn;
18+
import org.mybatis.dynamic.sql.BindableColumn;
19+
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
20+
import org.mybatis.dynamic.sql.select.function.AbstractUniTypeFunction;
1921

20-
public class Avg extends AbstractAggregate<Avg> {
22+
public class Avg<T> extends AbstractUniTypeFunction<T, Avg<T>> {
2123

22-
private Avg(BasicColumn column) {
24+
private Avg(BindableColumn<T> column) {
2325
super(column);
2426
}
25-
27+
2628
@Override
27-
protected String render(String columnName) {
28-
return "avg(" + columnName + ")"; //$NON-NLS-1$ //$NON-NLS-2$
29+
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
30+
return "avg(" + column.renderWithTableAlias(tableAliasCalculator) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
2931
}
3032

3133
@Override
32-
protected Avg copy() {
33-
return new Avg(column);
34+
protected Avg<T> copy() {
35+
return new Avg<>(column);
3436
}
3537

36-
public static Avg of(BasicColumn column) {
37-
return new Avg(column);
38+
public static <T> Avg<T> of(BindableColumn<T> column) {
39+
return new Avg<>(column);
3840
}
3941
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Max.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.aggregate;
1717

18-
import org.mybatis.dynamic.sql.BasicColumn;
18+
import org.mybatis.dynamic.sql.BindableColumn;
19+
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
20+
import org.mybatis.dynamic.sql.select.function.AbstractUniTypeFunction;
1921

20-
public class Max extends AbstractAggregate<Max> {
22+
public class Max<T> extends AbstractUniTypeFunction<T, Max<T>> {
2123

22-
private Max(BasicColumn column) {
24+
private Max(BindableColumn<T> column) {
2325
super(column);
2426
}
25-
27+
2628
@Override
27-
protected String render(String columnName) {
28-
return "max(" + columnName + ")"; //$NON-NLS-1$ //$NON-NLS-2$
29+
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
30+
return "max(" + column.renderWithTableAlias(tableAliasCalculator) + ")"; //$NON-NLS-1$ //$NON-NLS-2$;
2931
}
3032

3133
@Override
32-
protected Max copy() {
33-
return new Max(column);
34+
protected Max<T> copy() {
35+
return new Max<T>(column);
3436
}
3537

36-
public static Max of(BasicColumn column) {
37-
return new Max(column);
38+
public static <T> Max<T> of(BindableColumn<T> column) {
39+
return new Max<>(column);
3840
}
3941
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Min.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.aggregate;
1717

18-
import org.mybatis.dynamic.sql.BasicColumn;
18+
import org.mybatis.dynamic.sql.BindableColumn;
19+
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
20+
import org.mybatis.dynamic.sql.select.function.AbstractUniTypeFunction;
1921

20-
public class Min extends AbstractAggregate<Min> {
22+
public class Min<T> extends AbstractUniTypeFunction<T, Min<T>> {
2123

22-
private Min(BasicColumn column) {
24+
private Min(BindableColumn<T> column) {
2325
super(column);
2426
}
25-
27+
2628
@Override
27-
protected String render(String columnName) {
28-
return "min(" + columnName + ")"; //$NON-NLS-1$ //$NON-NLS-2$
29+
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
30+
return "min(" + column.renderWithTableAlias(tableAliasCalculator) + ")"; //$NON-NLS-1$ //$NON-NLS-2$;
2931
}
3032

3133
@Override
32-
protected Min copy() {
33-
return new Min(column);
34+
protected Min<T> copy() {
35+
return new Min<>(column);
3436
}
3537

36-
public static Min of(BasicColumn column) {
37-
return new Min(column);
38+
public static <T> Min<T> of(BindableColumn<T> column) {
39+
return new Min<>(column);
3840
}
3941
}

src/main/java/org/mybatis/dynamic/sql/select/aggregate/Sum.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,27 @@
1515
*/
1616
package org.mybatis.dynamic.sql.select.aggregate;
1717

18-
import org.mybatis.dynamic.sql.BasicColumn;
18+
import org.mybatis.dynamic.sql.BindableColumn;
19+
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
20+
import org.mybatis.dynamic.sql.select.function.AbstractUniTypeFunction;
1921

20-
public class Sum extends AbstractAggregate<Sum> {
22+
public class Sum<T> extends AbstractUniTypeFunction<T, Sum<T>> {
2123

22-
private Sum(BasicColumn column) {
24+
private Sum(BindableColumn<T> column) {
2325
super(column);
2426
}
25-
27+
2628
@Override
27-
protected String render(String columnName) {
28-
return "sum(" + columnName + ")"; //$NON-NLS-1$ //$NON-NLS-2$
29+
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
30+
return "sum(" + column.renderWithTableAlias(tableAliasCalculator) + ")"; //$NON-NLS-1$ //$NON-NLS-2$;
2931
}
3032

3133
@Override
32-
protected Sum copy() {
33-
return new Sum(column);
34+
protected Sum<T> copy() {
35+
return new Sum<>(column);
3436
}
3537

36-
public static Sum of(BasicColumn column) {
37-
return new Sum(column);
38+
public static <T> Sum<T> of(BindableColumn<T> column) {
39+
return new Sum<>(column);
3840
}
3941
}

0 commit comments

Comments
 (0)