@@ -36,11 +36,11 @@ import org.assertj.core.api.Assertions.assertThat
36
36
import org.junit.jupiter.api.Test
37
37
import org.mybatis.dynamic.sql.SqlBuilder.*
38
38
import org.mybatis.dynamic.sql.util.kotlin.*
39
- import org.mybatis.dynamic.sql.util.kotlin.mybatis3.deleteFrom
39
+ import org.mybatis.dynamic.sql.util.kotlin.mybatis3.*
40
40
import org.mybatis.dynamic.sql.util.kotlin.mybatis3.from
41
- import org.mybatis.dynamic.sql.util.kotlin.mybatis3.update
42
41
import java.io.InputStreamReader
43
42
import java.sql.DriverManager
43
+ import java.util.*
44
44
45
45
class GeneralKotlinTest {
46
46
private fun newSession (): SqlSession {
@@ -61,6 +61,41 @@ class GeneralKotlinTest {
61
61
return SqlSessionFactoryBuilder ().build(config).openSession()
62
62
}
63
63
64
+ @Test
65
+ fun testRawCount () {
66
+ newSession().use { session ->
67
+ val mapper = session.getMapper(PersonMapper ::class .java)
68
+
69
+ val countStatement = count(Person ) {
70
+ where(id, isLessThan(4 ))
71
+ }
72
+
73
+ assertThat(countStatement.selectStatement).isEqualTo(" select count(*) from Person" +
74
+ " where id < #{parameters.p1,jdbcType=INTEGER}" )
75
+
76
+ val rows = mapper.count(countStatement)
77
+
78
+ assertThat(rows).isEqualTo(3 )
79
+ }
80
+ }
81
+
82
+ @Test
83
+ fun testRawCountAllRows () {
84
+ newSession().use { session ->
85
+ val mapper = session.getMapper(PersonMapper ::class .java)
86
+
87
+ val countStatement = count(Person ) {
88
+ allRows()
89
+ }
90
+
91
+ assertThat(countStatement.selectStatement).isEqualTo(" select count(*) from Person" )
92
+
93
+ val rows = mapper.count(countStatement)
94
+
95
+ assertThat(rows).isEqualTo(6 )
96
+ }
97
+ }
98
+
64
99
@Test
65
100
fun testRawDelete1 () {
66
101
newSession().use { session ->
@@ -192,6 +227,80 @@ class GeneralKotlinTest {
192
227
}
193
228
}
194
229
230
+ @Test
231
+ fun testInsert () {
232
+ newSession().use { session ->
233
+ val mapper = session.getMapper(PersonMapper ::class .java)
234
+
235
+ val record = PersonRecord (100 , " Joe" , LastName (" Jones" ), Date (), true , " Developer" , 1 )
236
+
237
+ val insertStatement = insert(record, Person ) {
238
+ map(id).toProperty(" id" )
239
+ map(firstName).toProperty(" firstName" )
240
+ map(lastName).toProperty(" lastName" )
241
+ map(birthDate).toProperty(" birthDate" )
242
+ map(employed).toProperty(" employed" )
243
+ map(occupation).toProperty(" occupation" )
244
+ map(addressId).toProperty(" addressId" )
245
+ }
246
+
247
+ val expected = " insert into Person (id, first_name, last_name, birth_date, employed, occupation, address_id)" +
248
+ " values" +
249
+ " (#{record.id,jdbcType=INTEGER}, #{record.firstName,jdbcType=VARCHAR}," +
250
+ " #{record.lastName,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.LastNameTypeHandler}," +
251
+ " #{record.birthDate,jdbcType=DATE}, #{record.employed,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.YesNoTypeHandler}," +
252
+ " #{record.occupation,jdbcType=VARCHAR}, #{record.addressId,jdbcType=INTEGER})"
253
+
254
+ assertThat(insertStatement.insertStatement).isEqualTo(expected)
255
+
256
+ val rows = mapper.insert(insertStatement)
257
+ assertThat(rows).isEqualTo(1 )
258
+ }
259
+ }
260
+
261
+ @Test
262
+ fun testInsertMultiple () {
263
+ newSession().use { session ->
264
+ val mapper = session.getMapper(PersonMapper ::class .java)
265
+
266
+ val record1 = PersonRecord (100 , " Joe" , LastName (" Jones" ), Date (), true , " Developer" , 1 )
267
+ val record2 = PersonRecord (101 , " Sarah" , LastName (" Smith" ), Date (), true , " Architect" , 2 )
268
+
269
+ val insertStatement = insertMultiple(listOf (record1, record2), Person ) {
270
+ map(id).toProperty(" id" )
271
+ map(firstName).toProperty(" firstName" )
272
+ map(lastName).toProperty(" lastName" )
273
+ map(birthDate).toProperty(" birthDate" )
274
+ map(employed).toProperty(" employed" )
275
+ map(occupation).toProperty(" occupation" )
276
+ map(addressId).toProperty(" addressId" )
277
+ }
278
+
279
+ val expected = " insert into Person (id, first_name, last_name, birth_date, employed, occupation, address_id)" +
280
+ " values" +
281
+ " (#{records[0].id,jdbcType=INTEGER}," +
282
+ " #{records[0].firstName,jdbcType=VARCHAR}," +
283
+ " #{records[0].lastName,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.LastNameTypeHandler}," +
284
+ " #{records[0].birthDate,jdbcType=DATE}," +
285
+ " #{records[0].employed,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.YesNoTypeHandler}," +
286
+ " #{records[0].occupation,jdbcType=VARCHAR}," +
287
+ " #{records[0].addressId,jdbcType=INTEGER})" +
288
+ " , (#{records[1].id,jdbcType=INTEGER}," +
289
+ " #{records[1].firstName,jdbcType=VARCHAR}," +
290
+ " #{records[1].lastName,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.LastNameTypeHandler}," +
291
+ " #{records[1].birthDate,jdbcType=DATE}," +
292
+ " #{records[1].employed,jdbcType=VARCHAR,typeHandler=examples.kotlin.mybatis3.canonical.YesNoTypeHandler}," +
293
+ " #{records[1].occupation,jdbcType=VARCHAR}," +
294
+ " #{records[1].addressId,jdbcType=INTEGER})"
295
+
296
+ assertThat(insertStatement.insertStatement).isEqualTo(expected)
297
+
298
+ val rows = mapper.insertMultiple(insertStatement)
299
+
300
+ assertThat(rows).isEqualTo(2 )
301
+ }
302
+ }
303
+
195
304
@Test
196
305
fun testRawSelect () {
197
306
newSession().use { session ->
0 commit comments