Skip to content

Commit e5abaaf

Browse files
committed
add a method ADD_ROW() to support multi INTO_VALUES() in a single insert
1 parent 57825d1 commit e5abaaf

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/main/java/org/apache/ibatis/jdbc/AbstractSQL.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,15 @@ public T INTO_COLUMNS(String... columns) {
7979
* @since 3.4.2
8080
*/
8181
public T INTO_VALUES(String... values) {
82-
sql().values.add(Arrays.asList(values));
83-
return getSelf();
82+
List<List<String>> list = sql().values;
83+
if(list.isEmpty()){
84+
list.add(new ArrayList<>());
85+
}
86+
int index = list.size() - 1;
87+
for (String value : values) {
88+
list.get(index).add(value);
89+
}
90+
return getSelf();
8491
}
8592

8693
public T SELECT(String columns) {
@@ -263,6 +270,11 @@ public T ORDER_BY(String... columns) {
263270
return getSelf();
264271
}
265272

273+
public T ADD_ROW(){
274+
sql().values.add(new ArrayList<>());
275+
return getSelf();
276+
}
277+
266278
private SQLStatement sql() {
267279
return sql;
268280
}

src/test/java/org/apache/ibatis/jdbc/SQLTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ public void supportBatchInsert(){
311311
INSERT_INTO("table1 a");
312312
INTO_COLUMNS("col1,col2");
313313
INTO_VALUES("val1","val2");
314+
ADD_ROW();
314315
INTO_VALUES("val1","val2");
315316
}};
316317
assertThat(sql.toString()).isEqualToIgnoringWhitespace("INSERT INTO table1 a (col1,col2) VALUES (val1,val2), (val1,val2)");
@@ -325,4 +326,12 @@ public void singleInsert(){
325326
}};
326327
assertThat(sql.toString()).isEqualToIgnoringWhitespace("INSERT INTO table1 a (col1,col2) VALUES (val1,val2)");
327328
}
329+
330+
@Test
331+
public void singleInsertWithMultipleInsertValues(){
332+
final String sql = new SQL() {{
333+
INSERT_INTO("TABLE_A").INTO_COLUMNS("a", "b").INTO_VALUES("#{a}").INTO_VALUES("#{b}");
334+
}}.toString();
335+
System.out.println(sql.toString());
336+
}
328337
}

0 commit comments

Comments
 (0)