@@ -32,20 +32,8 @@ import org.mybatis.dynamic.sql.util.kotlin.spring.*
3232import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
3333import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder
3434import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
35- import java.sql.ResultSet
3635import java.util.*
3736
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-
4937class CanonicalSpringKotlinTemplateDirectTest {
5038 private lateinit var template: NamedParameterJdbcTemplate
5139
@@ -139,7 +127,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
139127 where(id, isLessThan(4 )) {
140128 or (occupation, isNotNull())
141129 }
142- and (employed, isEqualTo(" Yes " ))
130+ and (employed, isEqualTo(true ))
143131 }
144132
145133 assertThat(rows).isEqualTo(4 )
@@ -150,7 +138,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
150138 val rows = template.deleteFrom(Person ) {
151139 where(id, isLessThan(4 ))
152140 or (occupation, isNotNull()) {
153- and (employed, isEqualTo(" Yes " ))
141+ and (employed, isEqualTo(true ))
154142 }
155143 }
156144
@@ -162,7 +150,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
162150 val rows = template.deleteFrom(Person ) {
163151 where(id, isLessThan(4 ))
164152 and (occupation, isNotNull()) {
165- and (employed, isEqualTo(" Yes " ))
153+ and (employed, isEqualTo(true ))
166154 }
167155 }
168156
@@ -171,14 +159,14 @@ class CanonicalSpringKotlinTemplateDirectTest {
171159
172160 @Test
173161 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 )
175163
176164 val rows = template.insert(record, Person ) {
177165 map(id).toProperty(" id" )
178166 map(firstName).toProperty(" firstName" )
179- map(lastName).toProperty(" lastName " )
167+ map(lastName).toProperty(" lastNameAsString " )
180168 map(birthDate).toProperty(" birthDate" )
181- map(employed).toProperty(" employed " )
169+ map(employed).toProperty(" employedAsString " )
182170 map(occupation).toPropertyWhenPresent(" occupation" , record::occupation)
183171 map(addressId).toProperty(" addressId" )
184172 }
@@ -191,16 +179,41 @@ class CanonicalSpringKotlinTemplateDirectTest {
191179 val rows = template.insertInto(Person ) {
192180 set(id).toValue(100 )
193181 set(firstName).toValue(" Joe" )
194- set(lastName).toValue(" Jones" )
182+ set(lastName).toValue(LastName ( " Jones" ) )
195183 set(birthDate).toValue(Date ())
196- set(employed).toValue(" Yes " )
184+ set(employed).toValue(true )
197185 set(occupation).toValue(" Developer" )
198186 set(addressId).toValue(1 )
199187 }
200188
201189 assertThat(rows).isEqualTo(1 )
202190 }
203191
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+
204217 @Test
205218 fun testSelectAll () {
206219 val rows = template.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
@@ -229,9 +242,73 @@ class CanonicalSpringKotlinTemplateDirectTest {
229242 with (rows[0 ]) {
230243 assertThat(id).isEqualTo(1 )
231244 assertThat(firstName).isEqualTo(" Fred" )
232- assertThat(lastName).isEqualTo(" Flintstone" )
245+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
233246 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()
235312 assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
236313 assertThat(addressId).isEqualTo(1 )
237314 }
@@ -248,9 +325,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
248325 with (record!! ) {
249326 assertThat(id).isEqualTo(1 )
250327 assertThat(firstName).isEqualTo(" Fred" )
251- assertThat(lastName).isEqualTo(" Flintstone" )
328+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
252329 assertThat(birthDate).isNotNull()
253- assertThat(employed).isEqualTo( " Yes " )
330+ assertThat(employed).isTrue( )
254331 assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
255332 assertThat(addressId).isEqualTo(1 )
256333 }
@@ -304,33 +381,16 @@ class CanonicalSpringKotlinTemplateDirectTest {
304381 where(id, isLessThan(4 ))
305382 orderBy(id)
306383 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)
325385
326386
327387 assertThat(rows).hasSize(3 )
328388 with (rows[0 ]) {
329389 assertThat(id).isEqualTo(1 )
330390 assertThat(firstName).isEqualTo(" Fred" )
331- assertThat(lastName).isEqualTo(" Flintstone" )
391+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
332392 assertThat(birthDate).isNotNull()
333- assertThat(employed).isEqualTo( " Yes " )
393+ assertThat(employed).isTrue( )
334394 assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
335395 assertThat(address?.id).isEqualTo(1 )
336396 assertThat(address?.streetAddress).isEqualTo(" 123 Main Street" )
@@ -358,9 +418,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
358418 with (rows[0 ]) {
359419 assertThat(id).isEqualTo(1 )
360420 assertThat(firstName).isEqualTo(" Fred" )
361- assertThat(lastName).isEqualTo(" Flintstone" )
421+ assertThat(lastName!! .name ).isEqualTo(" Flintstone" )
362422 assertThat(birthDate).isNotNull()
363- assertThat(employed).isEqualTo( " Yes " )
423+ assertThat(employed).isTrue( )
364424 assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
365425 assertThat(addressId).isEqualTo(1 )
366426 }
@@ -385,9 +445,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
385445 with (rows[2 ]) {
386446 assertThat(id).isEqualTo(4 )
387447 assertThat(firstName).isEqualTo(" Barney" )
388- assertThat(lastName).isEqualTo(" Rubble" )
448+ assertThat(lastName!! .name ).isEqualTo(" Rubble" )
389449 assertThat(birthDate).isNotNull()
390- assertThat(employed).isEqualTo( " Yes " )
450+ assertThat(employed).isTrue( )
391451 assertThat(occupation).isEqualTo(" Brontosaurus Operator" )
392452 assertThat(addressId).isEqualTo(2 )
393453 }
0 commit comments