@@ -32,20 +32,8 @@ import org.mybatis.dynamic.sql.util.kotlin.spring.*
32
32
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
33
33
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder
34
34
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
35
- import java.sql.ResultSet
36
35
import java.util.*
37
36
38
- fun personRowMapper (rs : ResultSet , rowNum : Int ) =
39
- PersonRecord ().apply {
40
- id = rs.getInt(1 )
41
- firstName = rs.getString(2 )
42
- lastName = rs.getString(3 )
43
- birthDate = rs.getTimestamp(4 )
44
- employed = rs.getString(5 )
45
- occupation = rs.getString(6 )
46
- addressId = rs.getInt(7 )
47
- }
48
-
49
37
class CanonicalSpringKotlinTemplateDirectTest {
50
38
private lateinit var template: NamedParameterJdbcTemplate
51
39
@@ -139,7 +127,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
139
127
where(id, isLessThan(4 )) {
140
128
or (occupation, isNotNull())
141
129
}
142
- and (employed, isEqualTo(" Yes " ))
130
+ and (employed, isEqualTo(true ))
143
131
}
144
132
145
133
assertThat(rows).isEqualTo(4 )
@@ -150,7 +138,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
150
138
val rows = template.deleteFrom(Person ) {
151
139
where(id, isLessThan(4 ))
152
140
or (occupation, isNotNull()) {
153
- and (employed, isEqualTo(" Yes " ))
141
+ and (employed, isEqualTo(true ))
154
142
}
155
143
}
156
144
@@ -162,7 +150,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
162
150
val rows = template.deleteFrom(Person ) {
163
151
where(id, isLessThan(4 ))
164
152
and (occupation, isNotNull()) {
165
- and (employed, isEqualTo(" Yes " ))
153
+ and (employed, isEqualTo(true ))
166
154
}
167
155
}
168
156
@@ -171,14 +159,14 @@ class CanonicalSpringKotlinTemplateDirectTest {
171
159
172
160
@Test
173
161
fun testInsert () {
174
- val record = PersonRecord (100 , " Joe" , " Jones" , Date (), " Yes " , " Developer" , 1 )
162
+ val record = PersonRecord (100 , " Joe" , LastName ( " Jones" ) , Date (), true , " Developer" , 1 )
175
163
176
164
val rows = template.insert(record, Person ) {
177
165
map(id).toProperty(" id" )
178
166
map(firstName).toProperty(" firstName" )
179
- map(lastName).toProperty(" lastName " )
167
+ map(lastName).toProperty(" lastNameAsString " )
180
168
map(birthDate).toProperty(" birthDate" )
181
- map(employed).toProperty(" employed " )
169
+ map(employed).toProperty(" employedAsString " )
182
170
map(occupation).toPropertyWhenPresent(" occupation" , record::occupation)
183
171
map(addressId).toProperty(" addressId" )
184
172
}
@@ -191,16 +179,41 @@ class CanonicalSpringKotlinTemplateDirectTest {
191
179
val rows = template.insertInto(Person ) {
192
180
set(id).toValue(100 )
193
181
set(firstName).toValue(" Joe" )
194
- set(lastName).toValue(" Jones" )
182
+ set(lastName).toValue(LastName ( " Jones" ) )
195
183
set(birthDate).toValue(Date ())
196
- set(employed).toValue(" Yes " )
184
+ set(employed).toValue(true )
197
185
set(occupation).toValue(" Developer" )
198
186
set(addressId).toValue(1 )
199
187
}
200
188
201
189
assertThat(rows).isEqualTo(1 )
202
190
}
203
191
192
+ @Test
193
+ fun testMultiRowInsert () {
194
+ TODO ()
195
+ }
196
+
197
+ @Test
198
+ fun testBatchInsert () {
199
+ TODO ()
200
+ }
201
+
202
+ @Test
203
+ fun testGeneralInsertWithGeneratedKey () {
204
+ TODO ()
205
+ }
206
+
207
+ @Test
208
+ fun testInsertWithGeneratedKey () {
209
+ TODO ()
210
+ }
211
+
212
+ @Test
213
+ fun testMultiRowInsertWithGeneratedKey () {
214
+ TODO ()
215
+ }
216
+
204
217
@Test
205
218
fun testSelectAll () {
206
219
val rows = template.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
@@ -229,9 +242,73 @@ class CanonicalSpringKotlinTemplateDirectTest {
229
242
with (rows[0 ]) {
230
243
assertThat(id).isEqualTo(1 )
231
244
assertThat(firstName).isEqualTo(" Fred" )
232
- assertThat(lastName).isEqualTo(" Flintstone" )
245
+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
233
246
assertThat(birthDate).isNotNull()
234
- assertThat(employed).isEqualTo(" Yes" )
247
+ assertThat(employed).isTrue()
248
+ assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
249
+ assertThat(addressId).isEqualTo(1 )
250
+ }
251
+ }
252
+
253
+ @Test
254
+ fun testSelectWithUnion () {
255
+ val rows = template.select(
256
+ id, firstName, lastName, birthDate, employed, occupation, addressId)
257
+ .from(Person ) {
258
+ where(id, isEqualTo(1 ))
259
+ union {
260
+ select(id, firstName, lastName, birthDate, employed, occupation, addressId)
261
+ .from(Person ) {
262
+ where(id, isEqualTo(2 ))
263
+ }
264
+ }
265
+ union {
266
+ select(id, firstName, lastName, birthDate, employed, occupation, addressId)
267
+ .from(Person ) {
268
+ where(id, isEqualTo(2 ))
269
+ }
270
+ }
271
+ }.withRowMapper(::personRowMapper)
272
+
273
+ assertThat(rows).hasSize(2 )
274
+ with (rows[0 ]) {
275
+ assertThat(id).isEqualTo(1 )
276
+ assertThat(firstName).isEqualTo(" Fred" )
277
+ assertThat(lastName!! .name).isEqualTo(" Flintstone" )
278
+ assertThat(birthDate).isNotNull()
279
+ assertThat(employed).isTrue()
280
+ assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
281
+ assertThat(addressId).isEqualTo(1 )
282
+ }
283
+ }
284
+
285
+ @Test
286
+ fun testSelectWithUnionAll () {
287
+ val rows = template.select(
288
+ id, firstName, lastName, birthDate, employed, occupation, addressId)
289
+ .from(Person ) {
290
+ where(id, isEqualTo(1 ))
291
+ union {
292
+ select(id, firstName, lastName, birthDate, employed, occupation, addressId)
293
+ .from(Person ) {
294
+ where(id, isEqualTo(2 ))
295
+ }
296
+ }
297
+ unionAll {
298
+ select(id, firstName, lastName, birthDate, employed, occupation, addressId)
299
+ .from(Person ) {
300
+ where(id, isEqualTo(2 ))
301
+ }
302
+ }
303
+ }.withRowMapper(::personRowMapper)
304
+
305
+ assertThat(rows).hasSize(3 )
306
+ with (rows[0 ]) {
307
+ assertThat(id).isEqualTo(1 )
308
+ assertThat(firstName).isEqualTo(" Fred" )
309
+ assertThat(lastName!! .name).isEqualTo(" Flintstone" )
310
+ assertThat(birthDate).isNotNull()
311
+ assertThat(employed).isTrue()
235
312
assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
236
313
assertThat(addressId).isEqualTo(1 )
237
314
}
@@ -248,9 +325,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
248
325
with (record!! ) {
249
326
assertThat(id).isEqualTo(1 )
250
327
assertThat(firstName).isEqualTo(" Fred" )
251
- assertThat(lastName).isEqualTo(" Flintstone" )
328
+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
252
329
assertThat(birthDate).isNotNull()
253
- assertThat(employed).isEqualTo( " Yes " )
330
+ assertThat(employed).isTrue( )
254
331
assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
255
332
assertThat(addressId).isEqualTo(1 )
256
333
}
@@ -304,33 +381,16 @@ class CanonicalSpringKotlinTemplateDirectTest {
304
381
where(id, isLessThan(4 ))
305
382
orderBy(id)
306
383
limit(3 )
307
- }.withRowMapper { rs, _ ->
308
- val record = PersonWithAddress ()
309
- record.id = rs.getInt(1 )
310
- record.firstName = rs.getString(2 )
311
- record.lastName = rs.getString(3 )
312
- record.birthDate = rs.getTimestamp(4 )
313
- record.employed = rs.getString(5 )
314
- record.occupation = rs.getString(6 )
315
-
316
- val address = AddressRecord ()
317
- record.address = address
318
- address.id = rs.getInt(7 )
319
- address.streetAddress = rs.getString(8 )
320
- address.city = rs.getString(9 )
321
- address.state = rs.getString(10 )
322
-
323
- record
324
- }
384
+ }.withRowMapper(::personWithAddressRowMapper)
325
385
326
386
327
387
assertThat(rows).hasSize(3 )
328
388
with (rows[0 ]) {
329
389
assertThat(id).isEqualTo(1 )
330
390
assertThat(firstName).isEqualTo(" Fred" )
331
- assertThat(lastName).isEqualTo(" Flintstone" )
391
+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
332
392
assertThat(birthDate).isNotNull()
333
- assertThat(employed).isEqualTo( " Yes " )
393
+ assertThat(employed).isTrue( )
334
394
assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
335
395
assertThat(address?.id).isEqualTo(1 )
336
396
assertThat(address?.streetAddress).isEqualTo(" 123 Main Street" )
@@ -358,9 +418,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
358
418
with (rows[0 ]) {
359
419
assertThat(id).isEqualTo(1 )
360
420
assertThat(firstName).isEqualTo(" Fred" )
361
- assertThat(lastName).isEqualTo(" Flintstone" )
421
+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
362
422
assertThat(birthDate).isNotNull()
363
- assertThat(employed).isEqualTo( " Yes " )
423
+ assertThat(employed).isTrue( )
364
424
assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
365
425
assertThat(addressId).isEqualTo(1 )
366
426
}
@@ -385,9 +445,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
385
445
with (rows[2 ]) {
386
446
assertThat(id).isEqualTo(4 )
387
447
assertThat(firstName).isEqualTo(" Barney" )
388
- assertThat(lastName).isEqualTo(" Rubble" )
448
+ assertThat(lastName!! .name ).isEqualTo(" Rubble" )
389
449
assertThat(birthDate).isNotNull()
390
- assertThat(employed).isEqualTo( " Yes " )
450
+ assertThat(employed).isTrue( )
391
451
assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
392
452
assertThat(addressId).isEqualTo(2 )
393
453
}
0 commit comments