11/*
2- * Copyright 2016-2021 the original author or authors.
2+ * Copyright 2016-2022 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -22,24 +22,22 @@ import org.mybatis.dynamic.sql.select.SelectModel
2222import org.mybatis.dynamic.sql.util.Buildable
2323
2424@MyBatisDslMarker
25- sealed class KotlinBaseSubQueryBuilder < T : KotlinBaseSubQueryBuilder < T >> : Buildable <SelectModel > {
25+ sealed class KotlinBaseSubQueryBuilder : Buildable <SelectModel > {
2626 private lateinit var selectBuilder: KotlinSelectBuilder
2727
28- fun select (vararg selectList : BasicColumn , completer : SelectCompleter ): T =
28+ fun select (vararg selectList : BasicColumn , completer : SelectCompleter ): Unit =
2929 select(selectList.toList(), completer)
3030
31- fun select (selectList : List <BasicColumn >, completer : SelectCompleter ): T =
32- applySelf {
33- selectBuilder = KotlinSelectBuilder (SqlBuilder .select(selectList)).apply (completer)
34- }
31+ fun select (selectList : List <BasicColumn >, completer : SelectCompleter ) {
32+ selectBuilder = KotlinSelectBuilder (SqlBuilder .select(selectList)).apply (completer)
33+ }
3534
36- fun selectDistinct (vararg selectList : BasicColumn , completer : SelectCompleter ): T =
35+ fun selectDistinct (vararg selectList : BasicColumn , completer : SelectCompleter ): Unit =
3736 selectDistinct(selectList.toList(), completer)
3837
39- fun selectDistinct (selectList : List <BasicColumn >, completer : SelectCompleter ): T =
40- applySelf {
41- selectBuilder = KotlinSelectBuilder (SqlBuilder .selectDistinct(selectList)).apply (completer)
42- }
38+ fun selectDistinct (selectList : List <BasicColumn >, completer : SelectCompleter ) {
39+ selectBuilder = KotlinSelectBuilder (SqlBuilder .selectDistinct(selectList)).apply (completer)
40+ }
4341
4442 override fun build (): SelectModel =
4543 try {
@@ -49,29 +47,19 @@ sealed class KotlinBaseSubQueryBuilder<T : KotlinBaseSubQueryBuilder<T>> : Build
4947 " You must specify a select statement" , e
5048 )
5149 }
52-
53- private fun applySelf (block : T .() -> Unit ): T =
54- self().apply { block() }
55-
56- protected abstract fun self (): T
5750}
5851
59- class KotlinSubQueryBuilder : KotlinBaseSubQueryBuilder <KotlinSubQueryBuilder >() {
60- override fun self (): KotlinSubQueryBuilder = this
61- }
52+ class KotlinSubQueryBuilder : KotlinBaseSubQueryBuilder () {}
6253
63- class KotlinQualifiedSubQueryBuilder : KotlinBaseSubQueryBuilder < KotlinQualifiedSubQueryBuilder > () {
54+ class KotlinQualifiedSubQueryBuilder : KotlinBaseSubQueryBuilder () {
6455 var correlationName: String? = null
6556
66- operator fun String.unaryPlus (): KotlinQualifiedSubQueryBuilder {
57+ operator fun String.unaryPlus () {
6758 correlationName = this
68- return self()
6959 }
70-
71- override fun self (): KotlinQualifiedSubQueryBuilder = this
7260}
7361
74- class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder < KotlinInsertSelectSubQueryBuilder > () {
62+ class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder () {
7563 private lateinit var lateColumnList: List <SqlColumn <* >>
7664
7765 val columnList: List <SqlColumn <* >>
@@ -84,13 +72,9 @@ class KotlinInsertSelectSubQueryBuilder : KotlinBaseSubQueryBuilder<KotlinInsert
8472 )
8573 }
8674
87- fun columns (vararg columnList : SqlColumn <* >): KotlinInsertSelectSubQueryBuilder =
88- columns(columnList.asList())
75+ fun columns (vararg columnList : SqlColumn <* >): Unit = columns(columnList.asList())
8976
90- fun columns (columnList : List <SqlColumn <* >>): KotlinInsertSelectSubQueryBuilder =
91- apply {
92- this .lateColumnList = columnList
93- }
94-
95- override fun self (): KotlinInsertSelectSubQueryBuilder = this
77+ fun columns (columnList : List <SqlColumn <* >>) {
78+ this .lateColumnList = columnList
79+ }
9680}
0 commit comments