1616package org .mybatis .dynamic .sql .select .function ;
1717
1818import java .sql .JDBCType ;
19+ import java .util .List ;
1920import java .util .Objects ;
2021import java .util .Optional ;
22+ import java .util .StringJoiner ;
23+ import java .util .stream .Collectors ;
2124
2225import org .mybatis .dynamic .sql .BindableColumn ;
2326import org .mybatis .dynamic .sql .render .TableAliasCalculator ;
2427
2528public 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