1
1
/**
2
- * Copyright 2016-2018 the original author or authors.
2
+ * Copyright 2016-2019 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
51
51
import org .junit .jupiter .api .BeforeEach ;
52
52
import org .junit .jupiter .api .Test ;
53
53
import org .mybatis .dynamic .sql .insert .render .BatchInsert ;
54
- import org .mybatis .dynamic .sql .insert .render .MultiInsertStatementProvider ;
54
+ import org .mybatis .dynamic .sql .insert .render .DefaultMultiRowInsertStatementProvider ;
55
+ import org .mybatis .dynamic .sql .insert .render .MultiRowInsertStatementProvider ;
55
56
import org .mybatis .dynamic .sql .render .RenderingStrategy ;
56
57
import org .mybatis .dynamic .sql .select .render .SelectStatementProvider ;
57
58
import org .mybatis .dynamic .sql .update .render .UpdateStatementProvider ;
@@ -193,6 +194,31 @@ public void testBatchInsertWithArray() {
193
194
}
194
195
}
195
196
197
+ @ Test
198
+ public void testMultiInsertWithRawMyBatisAnnotations () {
199
+ try (SqlSession session = sqlSessionFactory .openSession ()) {
200
+ GeneratedAlwaysAnnotatedMapper mapper = session .getMapper (GeneratedAlwaysAnnotatedMapper .class );
201
+ List <GeneratedAlwaysRecord > records = getTestRecords ();
202
+
203
+ String statement = "insert into GeneratedAlways (id, first_name, last_name)" +
204
+ " values" +
205
+ " (#{records[0].id,jdbcType=INTEGER}, #{records[0].firstName,jdbcType=VARCHAR}, #{records[0].lastName,jdbcType=VARCHAR})," +
206
+ " (#{records[1].id,jdbcType=INTEGER}, #{records[1].firstName,jdbcType=VARCHAR}, #{records[1].lastName,jdbcType=VARCHAR})," +
207
+ " (#{records[2].id,jdbcType=INTEGER}, #{records[2].firstName,jdbcType=VARCHAR}, #{records[2].lastName,jdbcType=VARCHAR})," +
208
+ " (#{records[3].id,jdbcType=INTEGER}, #{records[3].firstName,jdbcType=VARCHAR}, #{records[3].lastName,jdbcType=VARCHAR})" ;
209
+
210
+ int rows = mapper .multiInsert (statement , records );
211
+
212
+ assertAll (
213
+ () -> assertThat (rows ).isEqualTo (4 ),
214
+ () -> assertThat (records .get (0 ).getFullName ()).isEqualTo ("George Jetson" ),
215
+ () -> assertThat (records .get (1 ).getFullName ()).isEqualTo ("Jane Jetson" ),
216
+ () -> assertThat (records .get (2 ).getFullName ()).isEqualTo ("Judy Jetson" ),
217
+ () -> assertThat (records .get (3 ).getFullName ()).isEqualTo ("Elroy Jetson" )
218
+ );
219
+ }
220
+ }
221
+
196
222
@ Test
197
223
public void testMultiInsertWithList () {
198
224
try (SqlSession session = sqlSessionFactory .openSession ()) {
@@ -207,18 +233,18 @@ public void testMultiInsertWithList() {
207
233
// .build()
208
234
// .render(RenderingStrategy.MYBATIS3);
209
235
210
- MultiInsertStatementProvider insertStatement = new MultiInsertStatementProvider ();
211
-
212
236
String statement = "insert into GeneratedAlways (id, first_name, last_name)" +
213
- " values (#{list[0].id,jdbcType=INTEGER}, #{list[0].firstName,jdbcType=VARCHAR}, #{list[0].lastName,jdbcType=VARCHAR})," +
214
- " (#{list[1].id,jdbcType=INTEGER}, #{list[1].firstName,jdbcType=VARCHAR}, #{list[1].lastName,jdbcType=VARCHAR})," +
215
- " (#{list[2].id,jdbcType=INTEGER}, #{list[2].firstName,jdbcType=VARCHAR}, #{list[2].lastName,jdbcType=VARCHAR})," +
216
- " (#{list[3].id,jdbcType=INTEGER}, #{list[3].firstName,jdbcType=VARCHAR}, #{list[3].lastName,jdbcType=VARCHAR})" ;
237
+ " values" +
238
+ " (#{records[0].id,jdbcType=INTEGER}, #{records[0].firstName,jdbcType=VARCHAR}, #{records[0].lastName,jdbcType=VARCHAR})," +
239
+ " (#{records[1].id,jdbcType=INTEGER}, #{records[1].firstName,jdbcType=VARCHAR}, #{records[1].lastName,jdbcType=VARCHAR})," +
240
+ " (#{records[2].id,jdbcType=INTEGER}, #{records[2].firstName,jdbcType=VARCHAR}, #{records[2].lastName,jdbcType=VARCHAR})," +
241
+ " (#{records[3].id,jdbcType=INTEGER}, #{records[3].firstName,jdbcType=VARCHAR}, #{records[3].lastName,jdbcType=VARCHAR})" ;
217
242
218
- insertStatement .setInsertStatement (statement );
219
- insertStatement .setList (records );
243
+ MultiRowInsertStatementProvider <GeneratedAlwaysRecord > insertStatement = new DefaultMultiRowInsertStatementProvider .Builder <GeneratedAlwaysRecord >()
244
+ .withInsertStatement (statement )
245
+ .withRecords (records )
246
+ .build ();
220
247
221
- // must use a Map...MyBatis is broken for using real objects
222
248
mapper .multiInsert (insertStatement );
223
249
224
250
assertAll (
0 commit comments