Skip to content

Commit 8770f10

Browse files
authored
Merge pull request #13 from tnicolas29200/modifyAddFunction
Modify the add function to support infinite columns
2 parents a3ffea4 + 358e462 commit 8770f10

File tree

2 files changed

+16
-15
lines changed

2 files changed

+16
-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: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,22 @@
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;
22+
import java.util.StringJoiner;
23+
import java.util.stream.Collectors;
2124

2225
import org.mybatis.dynamic.sql.BindableColumn;
2326
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
2427

2528
public class Add<T extends Number> implements BindableColumn<T> {
2629

2730
private String alias;
28-
private BindableColumn<T> column1;
29-
private BindableColumn<T> column2;
31+
private List<BindableColumn<T>> columns;
3032

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

3637
@Override
@@ -40,29 +41,29 @@ public Optional<String> alias() {
4041

4142
@Override
4243
public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
43-
return column1.renderWithTableAlias(tableAliasCalculator)
44-
+ " + " //$NON-NLS-1$
45-
+ column2.renderWithTableAlias(tableAliasCalculator);
44+
return columns.stream()
45+
.map(column -> column.renderWithTableAlias(tableAliasCalculator))
46+
.collect(Collectors.joining(" + "));
4647
}
4748

4849
@Override
4950
public BindableColumn<T> as(String alias) {
50-
Add<T> newColumn = new Add<>(column1, column2);
51+
Add<T> newColumn = new Add<>(columns);
5152
newColumn.alias = alias;
5253
return newColumn;
5354
}
5455

5556
@Override
5657
public JDBCType jdbcType() {
57-
return column1.jdbcType();
58+
return columns.get(0).jdbcType();
5859
}
5960

6061
@Override
6162
public Optional<String> typeHandler() {
62-
return column1.typeHandler();
63+
return columns.get(0).typeHandler();
6364
}
6465

65-
public static <T extends Number> Add<T> of(BindableColumn<T> column1, BindableColumn<T> column2) {
66-
return new Add<>(column1, column2);
66+
public static <T extends Number> Add<T> of(List<BindableColumn<T>> columns) {
67+
return new Add<>(columns);
6768
}
6869
}

0 commit comments

Comments
 (0)