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 ;
22
+ import java .util .StringJoiner ;
23
+ import java .util .stream .Collectors ;
21
24
22
25
import org .mybatis .dynamic .sql .BindableColumn ;
23
26
import org .mybatis .dynamic .sql .render .TableAliasCalculator ;
24
27
25
28
public class Add <T extends Number > implements BindableColumn <T > {
26
29
27
30
private String alias ;
28
- private BindableColumn <T > column1 ;
29
- private BindableColumn <T > column2 ;
31
+ private List <BindableColumn <T >> columns ;
30
32
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 );
34
35
}
35
36
36
37
@ Override
@@ -40,29 +41,29 @@ public Optional<String> alias() {
40
41
41
42
@ Override
42
43
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 ( " + " ) );
46
47
}
47
48
48
49
@ Override
49
50
public BindableColumn <T > as (String alias ) {
50
- Add <T > newColumn = new Add <>(column1 , column2 );
51
+ Add <T > newColumn = new Add <>(columns );
51
52
newColumn .alias = alias ;
52
53
return newColumn ;
53
54
}
54
55
55
56
@ Override
56
57
public JDBCType jdbcType () {
57
- return column1 .jdbcType ();
58
+ return columns . get ( 0 ) .jdbcType ();
58
59
}
59
60
60
61
@ Override
61
62
public Optional <String > typeHandler () {
62
- return column1 .typeHandler ();
63
+ return columns . get ( 0 ) .typeHandler ();
63
64
}
64
65
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 );
67
68
}
68
69
}
0 commit comments