16
16
package org .mybatis .dynamic .sql .select .function ;
17
17
18
18
import java .sql .JDBCType ;
19
+ import java .util .List ;
19
20
import java .util .Objects ;
20
21
import java .util .Optional ;
21
22
25
26
public class Add <T extends Number > implements BindableColumn <T > {
26
27
27
28
private String alias ;
28
- private BindableColumn <T > column1 ;
29
- private BindableColumn <T > column2 ;
29
+ private List <BindableColumn <T >> columns ;
30
30
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 );
34
33
}
35
34
36
35
@ Override
@@ -40,29 +39,34 @@ public Optional<String> alias() {
40
39
41
40
@ Override
42
41
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 ();
46
50
}
47
51
48
52
@ Override
49
53
public BindableColumn <T > as (String alias ) {
50
- Add <T > newColumn = new Add <>(column1 , column2 );
54
+ Add <T > newColumn = new Add <>(columns );
51
55
newColumn .alias = alias ;
52
56
return newColumn ;
53
57
}
54
58
55
59
@ Override
56
60
public JDBCType jdbcType () {
57
- return column1 .jdbcType ();
61
+ return columns . get ( 0 ) .jdbcType ();
58
62
}
59
63
60
64
@ Override
61
65
public Optional <String > typeHandler () {
62
- return column1 .typeHandler ();
66
+ return columns . get ( 0 ) .typeHandler ();
63
67
}
64
68
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 );
67
71
}
68
72
}
0 commit comments