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 ;
2122
2526public 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