Skip to content

Commit 50a301b

Browse files
committed
Update the Kotlin DSL for KeyHolder Support
1 parent 0d6c42e commit 50a301b

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinBaseBuilders.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.mybatis.dynamic.sql.select.AbstractQueryExpressionDSL
2222
import org.mybatis.dynamic.sql.select.SelectModel
2323
import org.mybatis.dynamic.sql.where.AbstractWhereDSL
2424

25+
@Target(AnnotationTarget.CLASS, AnnotationTarget.TYPE)
2526
@DslMarker
2627
annotation class MyBatisDslMarker
2728

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/KotlinInsertHelpers.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
2525
import org.mybatis.dynamic.sql.insert.MultiRowInsertModel
2626
import org.mybatis.dynamic.sql.util.Buildable
2727

28-
typealias GeneralInsertCompleter = GeneralInsertDSL.() -> Buildable<GeneralInsertModel>
28+
typealias GeneralInsertCompleter = @MyBatisDslMarker GeneralInsertDSL.() -> Buildable<GeneralInsertModel>
2929

30-
typealias InsertCompleter<T> = InsertDSL<T>.() -> Buildable<InsertModel<T>>
30+
typealias InsertCompleter<T> = @MyBatisDslMarker InsertDSL<T>.() -> Buildable<InsertModel<T>>
3131

32-
typealias MultiRowInsertCompleter<T> = MultiRowInsertDSL<T>.() -> Buildable<MultiRowInsertModel<T>>
32+
typealias MultiRowInsertCompleter<T> = @MyBatisDslMarker MultiRowInsertDSL<T>.() -> Buildable<MultiRowInsertModel<T>>
3333

34-
typealias BatchInsertCompleter<T> = BatchInsertDSL<T>.() -> Buildable<BatchInsertModel<T>>
34+
typealias BatchInsertCompleter<T> = @MyBatisDslMarker BatchInsertDSL<T>.() -> Buildable<BatchInsertModel<T>>

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/spring/NamedParameterJdbcTemplateExtensions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ fun <T> NamedParameterJdbcTemplate.insertMultiple(
117117
update(insertStatement.insertStatement, BeanPropertySqlParameterSource(insertStatement), keyHolder)
118118

119119
// insert with KeyHolder support
120-
fun NamedParameterJdbcTemplate.withKeyHolder(keyHolder: KeyHolder) =
121-
KeyHolderHelper(keyHolder, this)
120+
fun NamedParameterJdbcTemplate.withKeyHolder(keyHolder: KeyHolder, build: KeyHolderHelper.() -> Int) =
121+
build(KeyHolderHelper(keyHolder, this))
122122

123123
fun NamedParameterJdbcTemplate.select(vararg selectList: BasicColumn) =
124124
SelectListFromGatherer(selectList.toList(), this)

src/test/kotlin/examples/kotlin/spring/canonical/CanonicalSpringKotlinTemplateDirectTest.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,11 @@ class CanonicalSpringKotlinTemplateDirectTest {
252252
fun testGeneralInsertWithGeneratedKey() {
253253
val keyHolder = GeneratedKeyHolder()
254254

255-
val rows = template.withKeyHolder(keyHolder).insertInto(GeneratedAlways) {
256-
set(GeneratedAlways.firstName).toValue("Fred")
257-
set(GeneratedAlways.lastName).toValue("Flintstone")
255+
val rows = template.withKeyHolder(keyHolder) {
256+
insertInto(GeneratedAlways) {
257+
set(GeneratedAlways.firstName).toValue("Fred")
258+
set(GeneratedAlways.lastName).toValue("Flintstone")
259+
}
258260
}
259261

260262
assertThat(rows).isEqualTo(1)
@@ -268,9 +270,11 @@ class CanonicalSpringKotlinTemplateDirectTest {
268270

269271
val keyHolder = GeneratedKeyHolder()
270272

271-
val rows = template.withKeyHolder(keyHolder).insert(record).into(GeneratedAlways) {
272-
map(GeneratedAlways.firstName).toProperty("firstName")
273-
map(GeneratedAlways.lastName).toProperty("lastName")
273+
val rows = template.withKeyHolder(keyHolder) {
274+
insert(record).into(GeneratedAlways) {
275+
map(GeneratedAlways.firstName).toProperty("firstName")
276+
map(GeneratedAlways.lastName).toProperty("lastName")
277+
}
274278
}
275279

276280
assertThat(rows).isEqualTo(1)
@@ -285,11 +289,12 @@ class CanonicalSpringKotlinTemplateDirectTest {
285289

286290
val keyHolder = GeneratedKeyHolder()
287291

288-
val rows = template.withKeyHolder(keyHolder).insertMultiple(record1, record2)
289-
.into(GeneratedAlways) {
292+
val rows = template.withKeyHolder(keyHolder) {
293+
insertMultiple(record1, record2).into(GeneratedAlways) {
290294
map(GeneratedAlways.firstName).toProperty("firstName")
291295
map(GeneratedAlways.lastName).toProperty("lastName")
292296
}
297+
}
293298

294299
assertThat(rows).isEqualTo(2)
295300
assertThat(keyHolder.keyList[0]).containsEntry("ID", 22)

0 commit comments

Comments
 (0)