Skip to content

Commit d1dbf84

Browse files
author
nt
committed
Modify the add function to support infinite columns
1 parent a3ffea4 commit d1dbf84

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,8 @@ static Sum sum(BasicColumn column) {
188188
}
189189

190190
// functions
191-
static <T extends Number> Add<T> add(BindableColumn<T> column1, BindableColumn<T> column2) {
192-
return Add.of(column1, column2);
191+
static <T extends Number> Add<T> add(BindableColumn<T>... columns) {
192+
return Add.of(Arrays.asList(columns));
193193
}
194194

195195
static Lower lower(BindableColumn<String> column) {

src/main/java/org/mybatis/dynamic/sql/select/function/Add.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.mybatis.dynamic.sql.select.function;
1717

1818
import java.sql.JDBCType;
19+
import java.util.List;
1920
import java.util.Objects;
2021
import java.util.Optional;
2122

@@ -25,12 +26,10 @@
2526
public class Add<T extends Number> implements BindableColumn<T> {
2627

2728
private String alias;
28-
private BindableColumn<T> column1;
29-
private BindableColumn<T> column2;
29+
private List<BindableColumn<T>> columns;
3030

31-
private Add(BindableColumn<T> column1, BindableColumn<T> column2) {
32-
this.column1 = Objects.requireNonNull(column1);
33-
this.column2 = Objects.requireNonNull(column2);
31+
private Add(List<BindableColumn<T>> columns) {
32+
this.columns = Objects.requireNonNull(columns);
3433
}
3534

3635
@Override
@@ -40,29 +39,34 @@ public Optional<String> alias() {
4039

4140
@Override
4241
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
43-
return column1.renderWithTableAlias(tableAliasCalculator)
44-
+ " + " //$NON-NLS-1$
45-
+ column2.renderWithTableAlias(tableAliasCalculator);
42+
StringBuilder builder = new StringBuilder();
43+
for (BindableColumn<T> column: columns) {
44+
if (builder.length() > 0) {
45+
builder.append(" + ");
46+
}
47+
builder.append(column.renderWithTableAlias(tableAliasCalculator));
48+
}
49+
return builder.toString();
4650
}
4751

4852
@Override
4953
public BindableColumn<T> as(String alias) {
50-
Add<T> newColumn = new Add<>(column1, column2);
54+
Add<T> newColumn = new Add<>(columns);
5155
newColumn.alias = alias;
5256
return newColumn;
5357
}
5458

5559
@Override
5660
public JDBCType jdbcType() {
57-
return column1.jdbcType();
61+
return columns.get(0).jdbcType();
5862
}
5963

6064
@Override
6165
public Optional<String> typeHandler() {
62-
return column1.typeHandler();
66+
return columns.get(0).typeHandler();
6367
}
6468

65-
public static <T extends Number> Add<T> of(BindableColumn<T> column1, BindableColumn<T> column2) {
66-
return new Add<>(column1, column2);
69+
public static <T extends Number> Add<T> of(List<BindableColumn<T>> columns) {
70+
return new Add<>(columns);
6771
}
6872
}

0 commit comments

Comments
 (0)