Skip to content

Commit 061cfe6

Browse files
committed
Standardize Kotlin Pattern for MyBatis
1 parent 9532ded commit 061cfe6

File tree

8 files changed

+134
-72
lines changed

8 files changed

+134
-72
lines changed

src/test/kotlin/examples/kotlin/mybatis3/canonical/GeneratedAlwaysTest.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,22 @@ import java.sql.DriverManager
3636

3737
class GeneratedAlwaysTest {
3838
private fun newSession(executorType: ExecutorType = ExecutorType.REUSE): SqlSession {
39+
// this method re-initializes the database with every test - needed because of autoincrement fields
40+
3941
Class.forName(JDBC_DRIVER)
4042
val script = javaClass.getResourceAsStream("/examples/kotlin/spring/CreateGeneratedAlwaysDB.sql")
4143
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
4244
val sr = ScriptRunner(connection)
4345
sr.setLogWriter(null)
44-
sr.runScript(InputStreamReader(script))
46+
sr.runScript(InputStreamReader(script!!))
4547
}
4648

47-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
48-
val environment = Environment("test", JdbcTransactionFactory(), ds)
49-
val config = Configuration(environment)
50-
config.addMapper(GeneratedAlwaysMapper::class.java)
51-
return SqlSessionFactoryBuilder().build(config).openSession(executorType)
49+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
50+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
51+
with(Configuration(environment)) {
52+
addMapper(GeneratedAlwaysMapper::class.java)
53+
return SqlSessionFactoryBuilder().build(this).openSession(executorType)
54+
}
5255
}
5356

5457
@Test

src/test/kotlin/examples/kotlin/mybatis3/canonical/PersonMapperTest.kt

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ import org.apache.ibatis.mapping.Environment
3030
import org.apache.ibatis.session.Configuration
3131
import org.apache.ibatis.session.ExecutorType
3232
import org.apache.ibatis.session.SqlSession
33+
import org.apache.ibatis.session.SqlSessionFactory
3334
import org.apache.ibatis.session.SqlSessionFactoryBuilder
3435
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
3536
import org.assertj.core.api.Assertions.assertThat
37+
import org.junit.jupiter.api.BeforeAll
3638
import org.junit.jupiter.api.Test
39+
import org.junit.jupiter.api.TestInstance
40+
import org.junit.jupiter.api.TestInstance.Lifecycle
3741
import org.mybatis.dynamic.sql.util.kotlin.elements.add
3842
import org.mybatis.dynamic.sql.util.kotlin.elements.constant
3943
import org.mybatis.dynamic.sql.util.kotlin.elements.isIn
@@ -44,8 +48,12 @@ import java.io.InputStreamReader
4448
import java.sql.DriverManager
4549
import java.util.*
4650

51+
@TestInstance(Lifecycle.PER_CLASS)
4752
class PersonMapperTest {
48-
private fun newSession(executorType: ExecutorType = ExecutorType.REUSE): SqlSession {
53+
private lateinit var sqlSessionFactory: SqlSessionFactory
54+
55+
@BeforeAll
56+
fun setup() {
4957
Class.forName(JDBC_DRIVER)
5058
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/CreateSimpleDB.sql")
5159
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
@@ -54,16 +62,20 @@ class PersonMapperTest {
5462
sr.runScript(InputStreamReader(script!!))
5563
}
5664

57-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
58-
val environment = Environment("test", JdbcTransactionFactory(), ds)
59-
val config = Configuration(environment)
60-
config.typeHandlerRegistry.register(YesNoTypeHandler::class.java)
61-
config.addMapper(PersonMapper::class.java)
62-
config.addMapper(PersonWithAddressMapper::class.java)
63-
config.addMapper(AddressMapper::class.java)
64-
return SqlSessionFactoryBuilder().build(config).openSession(executorType)
65+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
66+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
67+
with(Configuration(environment)) {
68+
typeHandlerRegistry.register(YesNoTypeHandler::class.java)
69+
addMapper(PersonMapper::class.java)
70+
addMapper(PersonWithAddressMapper::class.java)
71+
addMapper(AddressMapper::class.java)
72+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
73+
}
6574
}
6675

76+
private fun newSession(executorType: ExecutorType = ExecutorType.REUSE): SqlSession =
77+
sqlSessionFactory.openSession(executorType)
78+
6779
@Test
6880
fun testSelect() {
6981
newSession().use { session ->

src/test/kotlin/examples/kotlin/mybatis3/canonical/ReusableWhereTest.kt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,35 +25,44 @@ import org.apache.ibatis.jdbc.ScriptRunner
2525
import org.apache.ibatis.mapping.Environment
2626
import org.apache.ibatis.session.Configuration
2727
import org.apache.ibatis.session.SqlSession
28+
import org.apache.ibatis.session.SqlSessionFactory
2829
import org.apache.ibatis.session.SqlSessionFactoryBuilder
2930
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
3031
import org.assertj.core.api.Assertions.assertThat
32+
import org.junit.jupiter.api.BeforeAll
3133
import org.junit.jupiter.api.Test
34+
import org.junit.jupiter.api.TestInstance
3235
import org.mybatis.dynamic.sql.util.kotlin.WhereApplier
3336
import org.mybatis.dynamic.sql.util.kotlin.andThen
3437
import org.mybatis.dynamic.sql.util.kotlin.mybatis3.select
3538
import java.io.InputStreamReader
3639
import java.sql.DriverManager
3740

41+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3842
class ReusableWhereTest {
39-
private fun newSession(): SqlSession {
43+
private lateinit var sqlSessionFactory: SqlSessionFactory
44+
45+
@BeforeAll
46+
fun setup() {
4047
Class.forName(JDBC_DRIVER)
4148
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/CreateSimpleDB.sql")
4249
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
4350
val sr = ScriptRunner(connection)
4451
sr.setLogWriter(null)
45-
sr.runScript(InputStreamReader(script))
52+
sr.runScript(InputStreamReader(script!!))
4653
}
4754

48-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
49-
val environment = Environment("test", JdbcTransactionFactory(), ds)
50-
val config = Configuration(environment)
51-
config.typeHandlerRegistry.register(YesNoTypeHandler::class.java)
52-
config.addMapper(PersonMapper::class.java)
53-
config.addMapper(PersonWithAddressMapper::class.java)
54-
return SqlSessionFactoryBuilder().build(config).openSession()
55+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
56+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
57+
with(Configuration(environment)) {
58+
typeHandlerRegistry.register(YesNoTypeHandler::class.java)
59+
addMapper(PersonMapper::class.java)
60+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
61+
}
5562
}
5663

64+
private fun newSession(): SqlSession = sqlSessionFactory.openSession()
65+
5766
@Test
5867
fun testCount() {
5968
newSession().use { session ->

src/test/kotlin/examples/kotlin/mybatis3/general/GeneralKotlinTest.kt

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import examples.kotlin.mybatis3.canonical.PersonDynamicSqlSupport.id
2626
import examples.kotlin.mybatis3.canonical.PersonDynamicSqlSupport.lastName
2727
import examples.kotlin.mybatis3.canonical.PersonDynamicSqlSupport.occupation
2828
import examples.kotlin.mybatis3.canonical.PersonMapper
29-
import examples.kotlin.mybatis3.canonical.PersonMapperTest
3029
import examples.kotlin.mybatis3.canonical.PersonRecord
3130
import examples.kotlin.mybatis3.canonical.PersonWithAddressMapper
3231
import examples.kotlin.mybatis3.canonical.YesNoTypeHandler
@@ -36,11 +35,14 @@ import org.apache.ibatis.jdbc.ScriptRunner
3635
import org.apache.ibatis.mapping.Environment
3736
import org.apache.ibatis.session.Configuration
3837
import org.apache.ibatis.session.SqlSession
38+
import org.apache.ibatis.session.SqlSessionFactory
3939
import org.apache.ibatis.session.SqlSessionFactoryBuilder
4040
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
4141
import org.assertj.core.api.Assertions.assertThat
4242
import org.assertj.core.api.Assertions.assertThatExceptionOfType
43+
import org.junit.jupiter.api.BeforeAll
4344
import org.junit.jupiter.api.Test
45+
import org.junit.jupiter.api.TestInstance
4446
import org.mybatis.dynamic.sql.util.Messages
4547
import org.mybatis.dynamic.sql.util.kotlin.KInvalidSQLException
4648
import org.mybatis.dynamic.sql.util.kotlin.elements.`as`
@@ -60,25 +62,32 @@ import java.sql.DriverManager
6062
import java.util.Date
6163

6264
@Suppress("LargeClass")
65+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
6366
class GeneralKotlinTest {
64-
private fun newSession(): SqlSession {
65-
Class.forName(PersonMapperTest.JDBC_DRIVER)
67+
private lateinit var sqlSessionFactory: SqlSessionFactory
68+
69+
@BeforeAll
70+
fun setup() {
71+
Class.forName(JDBC_DRIVER)
6672
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/CreateSimpleDB.sql")
67-
DriverManager.getConnection(PersonMapperTest.JDBC_URL, "sa", "").use { connection ->
73+
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
6874
val sr = ScriptRunner(connection)
6975
sr.setLogWriter(null)
70-
sr.runScript(InputStreamReader(script))
76+
sr.runScript(InputStreamReader(script!!))
7177
}
7278

73-
val ds = UnpooledDataSource(PersonMapperTest.JDBC_DRIVER, PersonMapperTest.JDBC_URL, "sa", "")
74-
val environment = Environment("test", JdbcTransactionFactory(), ds)
75-
val config = Configuration(environment)
76-
config.typeHandlerRegistry.register(YesNoTypeHandler::class.java)
77-
config.addMapper(PersonMapper::class.java)
78-
config.addMapper(PersonWithAddressMapper::class.java)
79-
return SqlSessionFactoryBuilder().build(config).openSession()
79+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
80+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
81+
with(Configuration(environment)) {
82+
typeHandlerRegistry.register(YesNoTypeHandler::class.java)
83+
addMapper(PersonMapper::class.java)
84+
addMapper(PersonWithAddressMapper::class.java)
85+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
86+
}
8087
}
8188

89+
private fun newSession(): SqlSession = sqlSessionFactory.openSession()
90+
8291
@Test
8392
fun testRawCount() {
8493
newSession().use { session ->
@@ -882,4 +891,9 @@ class GeneralKotlinTest {
882891
assertThat(rows).isEqualTo(2)
883892
}
884893
}
894+
895+
companion object {
896+
const val JDBC_URL = "jdbc:hsqldb:mem:aname"
897+
const val JDBC_DRIVER = "org.hsqldb.jdbcDriver"
898+
}
885899
}

src/test/kotlin/examples/kotlin/mybatis3/joins/DeprecatedWhereDSLTest.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ import org.apache.ibatis.jdbc.ScriptRunner
2222
import org.apache.ibatis.mapping.Environment
2323
import org.apache.ibatis.session.Configuration
2424
import org.apache.ibatis.session.SqlSession
25+
import org.apache.ibatis.session.SqlSessionFactory
2526
import org.apache.ibatis.session.SqlSessionFactoryBuilder
2627
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
2728
import org.assertj.core.api.Assertions.assertThat
29+
import org.junit.jupiter.api.BeforeAll
2830
import org.junit.jupiter.api.Test
31+
import org.junit.jupiter.api.TestInstance
2932
import org.mybatis.dynamic.sql.util.kotlin.elements.exists
3033
import org.mybatis.dynamic.sql.util.kotlin.elements.isEqualTo
3134
import org.mybatis.dynamic.sql.util.kotlin.elements.isGreaterThan
@@ -35,25 +38,30 @@ import org.mybatis.dynamic.sql.util.mybatis3.CommonSelectMapper
3538
import java.io.InputStreamReader
3639
import java.sql.DriverManager
3740

41+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3842
class DeprecatedWhereDSLTest {
43+
private lateinit var sqlSessionFactory: SqlSessionFactory
3944

40-
private fun newSession(): SqlSession {
45+
@BeforeAll
46+
fun setup() {
4147
Class.forName(JDBC_DRIVER)
4248
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/joins/CreateJoinDB.sql")
43-
4449
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
4550
val sr = ScriptRunner(connection)
4651
sr.setLogWriter(null)
47-
sr.runScript(InputStreamReader(script))
52+
sr.runScript(InputStreamReader(script!!))
4853
}
4954

50-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
51-
val environment = Environment("test", JdbcTransactionFactory(), ds)
52-
val config = Configuration(environment)
53-
config.addMapper(CommonSelectMapper::class.java)
54-
return SqlSessionFactoryBuilder().build(config).openSession()
55+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
56+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
57+
with(Configuration(environment)) {
58+
addMapper(CommonSelectMapper::class.java)
59+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
60+
}
5561
}
5662

63+
private fun newSession(): SqlSession = sqlSessionFactory.openSession()
64+
5765
@Test
5866
fun testExists() {
5967
newSession().use { session ->

src/test/kotlin/examples/kotlin/mybatis3/joins/ExistsTest.kt

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ import org.apache.ibatis.jdbc.ScriptRunner
2222
import org.apache.ibatis.mapping.Environment
2323
import org.apache.ibatis.session.Configuration
2424
import org.apache.ibatis.session.SqlSession
25+
import org.apache.ibatis.session.SqlSessionFactory
2526
import org.apache.ibatis.session.SqlSessionFactoryBuilder
2627
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
2728
import org.assertj.core.api.Assertions.assertThat
29+
import org.junit.jupiter.api.BeforeAll
2830
import org.junit.jupiter.api.Test
31+
import org.junit.jupiter.api.TestInstance
2932
import org.mybatis.dynamic.sql.util.kotlin.elements.invoke
3033
import org.mybatis.dynamic.sql.util.kotlin.mybatis3.deleteFrom
3134
import org.mybatis.dynamic.sql.util.kotlin.mybatis3.select
@@ -36,27 +39,32 @@ import org.mybatis.dynamic.sql.util.mybatis3.CommonUpdateMapper
3639
import java.io.InputStreamReader
3740
import java.sql.DriverManager
3841

42+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
3943
class ExistsTest {
44+
private lateinit var sqlSessionFactory: SqlSessionFactory
4045

41-
private fun newSession(): SqlSession {
46+
@BeforeAll
47+
fun setup() {
4248
Class.forName(JDBC_DRIVER)
4349
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/joins/CreateJoinDB.sql")
44-
4550
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
4651
val sr = ScriptRunner(connection)
4752
sr.setLogWriter(null)
48-
sr.runScript(InputStreamReader(script))
53+
sr.runScript(InputStreamReader(script!!))
4954
}
5055

51-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
52-
val environment = Environment("test", JdbcTransactionFactory(), ds)
53-
val config = Configuration(environment)
54-
config.addMapper(CommonSelectMapper::class.java)
55-
config.addMapper(CommonDeleteMapper::class.java)
56-
config.addMapper(CommonUpdateMapper::class.java)
57-
return SqlSessionFactoryBuilder().build(config).openSession()
56+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
57+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
58+
with(Configuration(environment)) {
59+
addMapper(CommonSelectMapper::class.java)
60+
addMapper(CommonDeleteMapper::class.java)
61+
addMapper(CommonUpdateMapper::class.java)
62+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
63+
}
5864
}
5965

66+
private fun newSession(): SqlSession = sqlSessionFactory.openSession()
67+
6068
@Test
6169
fun testExists() {
6270
newSession().use { session ->

src/test/kotlin/examples/kotlin/mybatis3/joins/JoinMapperTest.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,15 @@ import org.apache.ibatis.jdbc.ScriptRunner
2525
import org.apache.ibatis.mapping.Environment
2626
import org.apache.ibatis.session.Configuration
2727
import org.apache.ibatis.session.SqlSession
28+
import org.apache.ibatis.session.SqlSessionFactory
2829
import org.apache.ibatis.session.SqlSessionFactoryBuilder
2930
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory
3031
import org.assertj.core.api.Assertions.assertThat
3132
import org.assertj.core.api.Assertions.assertThatExceptionOfType
3233
import org.assertj.core.api.Assertions.entry
34+
import org.junit.jupiter.api.BeforeAll
3335
import org.junit.jupiter.api.Test
36+
import org.junit.jupiter.api.TestInstance
3437
import org.mybatis.dynamic.sql.util.Messages
3538
import org.mybatis.dynamic.sql.util.kotlin.KInvalidSQLException
3639
import org.mybatis.dynamic.sql.util.kotlin.elements.equalTo
@@ -41,25 +44,30 @@ import java.io.InputStreamReader
4144
import java.sql.DriverManager
4245

4346
@Suppress("LargeClass")
47+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
4448
class JoinMapperTest {
49+
private lateinit var sqlSessionFactory: SqlSessionFactory
4550

46-
private fun newSession(): SqlSession {
51+
@BeforeAll
52+
fun setup() {
4753
Class.forName(JDBC_DRIVER)
4854
val script = javaClass.getResourceAsStream("/examples/kotlin/mybatis3/joins/CreateJoinDB.sql")
49-
5055
DriverManager.getConnection(JDBC_URL, "sa", "").use { connection ->
5156
val sr = ScriptRunner(connection)
5257
sr.setLogWriter(null)
53-
sr.runScript(InputStreamReader(script))
58+
sr.runScript(InputStreamReader(script!!))
5459
}
5560

56-
val ds = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
57-
val environment = Environment("test", JdbcTransactionFactory(), ds)
58-
val config = Configuration(environment)
59-
config.addMapper(JoinMapper::class.java)
60-
return SqlSessionFactoryBuilder().build(config).openSession()
61+
val dataSource = UnpooledDataSource(JDBC_DRIVER, JDBC_URL, "sa", "")
62+
val environment = Environment("test", JdbcTransactionFactory(), dataSource)
63+
with(Configuration(environment)) {
64+
addMapper(JoinMapper::class.java)
65+
sqlSessionFactory = SqlSessionFactoryBuilder().build(this)
66+
}
6167
}
6268

69+
private fun newSession(): SqlSession = sqlSessionFactory.openSession()
70+
6371
@Test
6472
fun testSingleTableJoin() {
6573
newSession().use { session ->

0 commit comments

Comments
 (0)