Skip to content

Commit efb7f98

Browse files
committed
Consistency in countFrom function names
1 parent 1bdb75d commit efb7f98

File tree

8 files changed

+97
-44
lines changed

8 files changed

+97
-44
lines changed

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/mybatis3/MapperSupportFunctions.kt

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.mybatis.dynamic.sql.util.kotlin.mybatis3
1717

1818
import org.mybatis.dynamic.sql.BasicColumn
19+
import org.mybatis.dynamic.sql.SqlBuilder
1920
import org.mybatis.dynamic.sql.SqlTable
2021
import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider
2122
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider
@@ -26,29 +27,29 @@ import org.mybatis.dynamic.sql.select.render.SelectStatementProvider
2627
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider
2728
import org.mybatis.dynamic.sql.util.kotlin.*
2829

29-
fun count(mapper: (SelectStatementProvider) -> Long, table: SqlTable, completer: CountCompleter) =
30-
mapper(count(table, completer))
30+
fun countFrom(mapper: (SelectStatementProvider) -> Long, table: SqlTable, completer: CountCompleter) =
31+
mapper(countFrom(table, completer))
3132

3233
fun deleteFrom(mapper: (DeleteStatementProvider) -> Int, table: SqlTable, completer: DeleteCompleter) =
3334
mapper(deleteFrom(table, completer))
3435

3536
fun <T> insert(mapper: (InsertStatementProvider<T>) -> Int, record: T, table: SqlTable, completer: InsertCompleter<T>) =
36-
mapper(insert(record, table, completer))
37+
mapper(SqlBuilder.insert(record).into(table, completer))
3738

3839
fun <T> insertMultiple(mapper: (MultiRowInsertStatementProvider<T>) -> Int, records: Collection<T>, table: SqlTable, completer: MultiRowInsertCompleter<T>) =
39-
mapper(insertMultiple(records, table, completer))
40+
mapper(SqlBuilder.insertMultiple(records).into(table, completer))
4041

4142
fun <T> selectDistinct(mapper: (SelectStatementProvider) -> List<T>, selectList: List<BasicColumn>, table: SqlTable, completer: SelectCompleter) =
42-
mapper(selectDistinct(selectList, table, completer))
43+
mapper(SqlBuilder.selectDistinct(selectList).from(table, completer))
4344

4445
fun <T> selectList(mapper: (SelectStatementProvider) -> List<T>, selectList: List<BasicColumn>, table: SqlTable, completer: SelectCompleter) =
45-
mapper(select(selectList, table, completer))
46+
mapper(SqlBuilder.select(selectList).from(table, completer))
4647

4748
fun <T> selectList(mapper: (SelectStatementProvider) -> List<T>, start: QueryExpressionDSL<SelectModel>, completer: SelectCompleter) =
4849
mapper(select(start, completer))
4950

5051
fun <T> selectOne(mapper: (SelectStatementProvider) -> T?, selectList: List<BasicColumn>, table: SqlTable, completer: SelectCompleter) =
51-
mapper(select(selectList, table, completer))
52+
mapper(SqlBuilder.select(selectList).from(table, completer))
5253

5354
fun <T> selectOne(mapper: (SelectStatementProvider) -> T?, start: QueryExpressionDSL<SelectModel>, completer: SelectCompleter) =
5455
mapper(select(start, completer))

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/mybatis3/ProviderBuilderFunctions.kt

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,27 +15,28 @@
1515
*/
1616
package org.mybatis.dynamic.sql.util.kotlin.mybatis3
1717

18-
import org.mybatis.dynamic.sql.BasicColumn
1918
import org.mybatis.dynamic.sql.SqlBuilder
2019
import org.mybatis.dynamic.sql.SqlTable
20+
import org.mybatis.dynamic.sql.insert.InsertDSL
21+
import org.mybatis.dynamic.sql.insert.MultiRowInsertDSL
2122
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider
2223
import org.mybatis.dynamic.sql.insert.render.MultiRowInsertStatementProvider
2324
import org.mybatis.dynamic.sql.render.RenderingStrategies
2425
import org.mybatis.dynamic.sql.select.QueryExpressionDSL
2526
import org.mybatis.dynamic.sql.select.SelectModel
2627
import org.mybatis.dynamic.sql.util.kotlin.*
2728

28-
fun count(table: SqlTable, completer: CountCompleter) =
29+
fun countFrom(table: SqlTable, completer: CountCompleter) =
2930
completer(SqlBuilder.countFrom(table)).build().render(RenderingStrategies.MYBATIS3)
3031

3132
fun deleteFrom(table: SqlTable, completer: DeleteCompleter) =
3233
completer(SqlBuilder.deleteFrom(table)).build().render(RenderingStrategies.MYBATIS3)
3334

34-
fun <T> insert(record: T, table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
35-
completer(SqlBuilder.insert(record).into(table)).build().render(RenderingStrategies.MYBATIS3)
35+
fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
36+
completer(into(table)).build().render(RenderingStrategies.MYBATIS3)
3637

37-
fun <T> insertMultiple(records: Collection<T>, table: SqlTable, completer: MultiRowInsertCompleter<T>): MultiRowInsertStatementProvider<T> =
38-
completer(SqlBuilder.insertMultiple(records).into(table)).build().render(RenderingStrategies.MYBATIS3)
38+
fun <T> MultiRowInsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: MultiRowInsertCompleter<T>): MultiRowInsertStatementProvider<T> =
39+
completer(into(table)).build().render(RenderingStrategies.MYBATIS3)
3940

4041
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, completer: SelectCompleter) =
4142
completer(from(table)).build().render(RenderingStrategies.MYBATIS3)
@@ -46,11 +47,5 @@ fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, alias: St
4647
fun select(start: QueryExpressionDSL<SelectModel>, completer: SelectCompleter) =
4748
completer(start).build().render(RenderingStrategies.MYBATIS3)
4849

49-
fun select(selectList: List<BasicColumn>, table: SqlTable, completer: SelectCompleter) =
50-
SqlBuilder.select(selectList).from(table, completer)
51-
52-
fun selectDistinct(selectList: List<BasicColumn>, table: SqlTable, completer: SelectCompleter) =
53-
SqlBuilder.selectDistinct(selectList).from(table, completer)
54-
5550
fun update(table: SqlTable, completer: UpdateCompleter) =
5651
completer(SqlBuilder.update(table)).build().render(RenderingStrategies.MYBATIS3)

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

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ import java.sql.ResultSet
3030
fun NamedParameterJdbcTemplate.count(selectStatement: SelectStatementProvider) =
3131
queryForObject(selectStatement.selectStatement, selectStatement.parameters, Long::class.java)!!
3232

33-
fun NamedParameterJdbcTemplate.count(table: SqlTable, completer: CountCompleter) =
34-
count(org.mybatis.dynamic.sql.util.kotlin.spring.count(table, completer))
33+
fun NamedParameterJdbcTemplate.countFrom(table: SqlTable, completer: CountCompleter) =
34+
count(org.mybatis.dynamic.sql.util.kotlin.spring.countFrom(table, completer))
3535

3636
fun NamedParameterJdbcTemplate.delete(deleteStatement: DeleteStatementProvider) =
3737
update(deleteStatement.deleteStatement, deleteStatement.parameters)
@@ -43,13 +43,16 @@ fun <T> NamedParameterJdbcTemplate.insert(insertStatement: InsertStatementProvid
4343
update(insertStatement.insertStatement, BeanPropertySqlParameterSource(insertStatement.record))
4444

4545
fun <T> NamedParameterJdbcTemplate.insert(record: T, table: SqlTable, completer: InsertCompleter<T>) =
46-
insert(org.mybatis.dynamic.sql.util.kotlin.spring.insert(record, table, completer))
46+
insert(SqlBuilder.insert(record).into(table, completer))
4747

4848
fun NamedParameterJdbcTemplate.select(vararg selectList: BasicColumn) =
49-
FromGatherer(selectList.toList(), this)
49+
SelectListFromGatherer(selectList.toList(), this)
5050

5151
fun NamedParameterJdbcTemplate.selectDistinct(vararg selectList: BasicColumn) =
52-
DistinctFromGatherer(selectList.toList(), this)
52+
SelectDistinctFromGatherer(selectList.toList(), this)
53+
54+
fun NamedParameterJdbcTemplate.selectOne(vararg selectList: BasicColumn) =
55+
SelectOneFromGatherer(selectList.toList(), this)
5356

5457
fun <T> NamedParameterJdbcTemplate.selectList(selectStatement: SelectStatementProvider, rowMapper: (rs: ResultSet, rowNum: Int) -> T): List<T> =
5558
query(selectStatement.selectStatement, selectStatement.parameters, rowMapper)
@@ -64,23 +67,36 @@ fun NamedParameterJdbcTemplate.update(table: SqlTable, completer: UpdateComplete
6467
update(org.mybatis.dynamic.sql.util.kotlin.spring.update(table, completer))
6568

6669
// support classes for select DSL
67-
class FromGatherer(private val selectList: List<BasicColumn>, private val template: NamedParameterJdbcTemplate) {
70+
class SelectListFromGatherer(private val selectList: List<BasicColumn>, private val template: NamedParameterJdbcTemplate) {
6871
fun from(table: SqlTable, completer: SelectCompleter) =
69-
MapperGatherer(SqlBuilder.select(selectList).from(table, completer), template)
72+
SelectListMapperGatherer(SqlBuilder.select(selectList).from(table, completer), template)
7073

7174
fun from(table: SqlTable, alias: String, completer: SelectCompleter) =
72-
MapperGatherer(SqlBuilder.select(selectList).from(table, alias, completer), template)
75+
SelectListMapperGatherer(SqlBuilder.select(selectList).from(table, alias, completer), template)
7376
}
7477

75-
class DistinctFromGatherer(private val selectList: List<BasicColumn>, private val template: NamedParameterJdbcTemplate) {
78+
class SelectDistinctFromGatherer(private val selectList: List<BasicColumn>, private val template: NamedParameterJdbcTemplate) {
7679
fun from(table: SqlTable, completer: SelectCompleter) =
77-
MapperGatherer(SqlBuilder.selectDistinct(selectList).from(table, completer), template)
80+
SelectListMapperGatherer(SqlBuilder.selectDistinct(selectList).from(table, completer), template)
7881

7982
fun from(table: SqlTable, alias: String, completer: SelectCompleter) =
80-
MapperGatherer(SqlBuilder.selectDistinct(selectList).from(table, alias, completer), template)
83+
SelectListMapperGatherer(SqlBuilder.selectDistinct(selectList).from(table, alias, completer), template)
8184
}
8285

83-
class MapperGatherer(private val selectStatement: SelectStatementProvider, private val template: NamedParameterJdbcTemplate) {
86+
class SelectOneFromGatherer(private val selectList: List<BasicColumn>, private val template: NamedParameterJdbcTemplate) {
87+
fun from(table: SqlTable, completer: SelectCompleter) =
88+
SelectOneMapperGatherer(SqlBuilder.select(selectList).from(table, completer), template)
89+
90+
fun from(table: SqlTable, alias: String, completer: SelectCompleter) =
91+
SelectOneMapperGatherer(SqlBuilder.select(selectList).from(table, alias, completer), template)
92+
}
93+
94+
class SelectListMapperGatherer(private val selectStatement: SelectStatementProvider, private val template: NamedParameterJdbcTemplate) {
8495
fun <T> withRowMapper(rowMapper: (rs: ResultSet, rowNum: Int) -> T) =
8596
template.selectList(selectStatement, rowMapper)
8697
}
98+
99+
class SelectOneMapperGatherer(private val selectStatement: SelectStatementProvider, private val template: NamedParameterJdbcTemplate) {
100+
fun <T> withRowMapper(rowMapper: (rs: ResultSet, rowNum: Int) -> T) =
101+
template.selectOne(selectStatement, rowMapper)
102+
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,21 @@ package org.mybatis.dynamic.sql.util.kotlin.spring
1717

1818
import org.mybatis.dynamic.sql.SqlBuilder
1919
import org.mybatis.dynamic.sql.SqlTable
20+
import org.mybatis.dynamic.sql.insert.InsertDSL
2021
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider
2122
import org.mybatis.dynamic.sql.render.RenderingStrategies
2223
import org.mybatis.dynamic.sql.select.QueryExpressionDSL
2324
import org.mybatis.dynamic.sql.select.SelectModel
2425
import org.mybatis.dynamic.sql.util.kotlin.*
2526

26-
fun count(table: SqlTable, completer: CountCompleter) =
27+
fun countFrom(table: SqlTable, completer: CountCompleter) =
2728
completer(SqlBuilder.countFrom(table)).build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
2829

2930
fun deleteFrom(table: SqlTable, completer: DeleteCompleter) =
3031
completer(SqlBuilder.deleteFrom(table)).build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
3132

32-
fun <T> insert(record: T, table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
33-
completer(SqlBuilder.insert(record).into(table)).build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
33+
fun <T> InsertDSL.IntoGatherer<T>.into(table: SqlTable, completer: InsertCompleter<T>): InsertStatementProvider<T> =
34+
completer(into(table)).build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)
3435

3536
fun QueryExpressionDSL.FromGatherer<SelectModel>.from(table: SqlTable, completer: SelectCompleter) =
3637
completer(from(table)).build().render(RenderingStrategies.SPRING_NAMED_PARAMETER)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import org.mybatis.dynamic.sql.util.kotlin.UpdateCompleter
3333
import org.mybatis.dynamic.sql.util.kotlin.mybatis3.*
3434

3535
fun PersonMapper.count(completer: CountCompleter) =
36-
count(this::count, Person, completer)
36+
countFrom(this::count, Person, completer)
3737

3838
fun PersonMapper.delete(completer: DeleteCompleter) =
3939
deleteFrom(this::delete, Person, completer)

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class GeneralKotlinTest {
6666
newSession().use { session ->
6767
val mapper = session.getMapper(PersonMapper::class.java)
6868

69-
val countStatement = count(Person) {
69+
val countStatement = countFrom(Person) {
7070
where(id, isLessThan(4))
7171
}
7272

@@ -84,7 +84,7 @@ class GeneralKotlinTest {
8484
newSession().use { session ->
8585
val mapper = session.getMapper(PersonMapper::class.java)
8686

87-
val countStatement = count(Person) {
87+
val countStatement = countFrom(Person) {
8888
allRows()
8989
}
9090

@@ -234,7 +234,7 @@ class GeneralKotlinTest {
234234

235235
val record = PersonRecord(100, "Joe", LastName("Jones"), Date(), true, "Developer", 1)
236236

237-
val insertStatement = insert(record, Person) {
237+
val insertStatement = insert(record).into(Person) {
238238
map(id).toProperty("id")
239239
map(firstName).toProperty("firstName")
240240
map(lastName).toProperty("lastName")
@@ -266,7 +266,7 @@ class GeneralKotlinTest {
266266
val record1 = PersonRecord(100, "Joe", LastName("Jones"), Date(), true, "Developer", 1)
267267
val record2 = PersonRecord(101, "Sarah", LastName("Smith"), Date(), true, "Architect", 2)
268268

269-
val insertStatement = insertMultiple(listOf(record1, record2), Person) {
269+
val insertStatement = insertMultiple(listOf(record1, record2)).into(Person) {
270270
map(id).toProperty("id")
271271
map(firstName).toProperty("firstName")
272272
map(lastName).toProperty("lastName")

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

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
5050

5151
@Test
5252
fun testCount() {
53-
val rows = template.count(Person) {
53+
val rows = template.countFrom(Person) {
5454
where(id, isLessThan(4))
5555
}
5656

@@ -59,7 +59,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
5959

6060
@Test
6161
fun testCountAllRows() {
62-
val rows = template.count(Person) {
62+
val rows = template.countFrom(Person) {
6363
allRows()
6464
}
6565

@@ -182,6 +182,46 @@ class CanonicalSpringKotlinTemplateDirectTest {
182182
}
183183
}
184184

185+
@Test
186+
fun testSelectByPrimaryKey() {
187+
val record = template.selectOne(id.`as`("A_ID"), firstName, lastName, birthDate, employed, occupation, addressId)
188+
.from(Person) {
189+
where(id, isEqualTo(1))
190+
}.withRowMapper { rs, _ ->
191+
val record = PersonRecord()
192+
record.id = rs.getInt(1)
193+
record.firstName = rs.getString(2)
194+
record.lastName = rs.getString(3)
195+
record.birthDate = rs.getTimestamp(4)
196+
record.employed = rs.getString(5)
197+
record.occupation = rs.getString(6)
198+
record.addressId = rs.getInt(7)
199+
record
200+
}
201+
202+
with(record!!) {
203+
assertThat(id).isEqualTo(1)
204+
assertThat(firstName).isEqualTo("Fred")
205+
assertThat(lastName).isEqualTo("Flintstone")
206+
assertThat(birthDate).isNotNull()
207+
assertThat(employed).isEqualTo("Yes")
208+
assertThat(occupation).isEqualTo("Brontosaurus Operator")
209+
assertThat(addressId).isEqualTo(1)
210+
}
211+
}
212+
213+
@Test
214+
fun testSelectDistinct() {
215+
val rows = template.selectDistinct(lastName)
216+
.from(Person) {
217+
orderBy(lastName)
218+
}.withRowMapper { rs, _ ->
219+
rs.getString(1)
220+
}
221+
222+
assertThat(rows.size).isEqualTo(2)
223+
}
224+
185225
@Test
186226
fun testSelectWithJoin() {
187227
val rows = template.select(id.`as`("A_ID"), firstName, lastName, birthDate, employed, occupation,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class CanonicalSpringKotlinTest {
5151

5252
@Test
5353
fun testRawCount() {
54-
val countStatement = count(Person) {
54+
val countStatement = countFrom(Person) {
5555
where(id, isLessThan(4))
5656
}
5757

@@ -65,7 +65,7 @@ class CanonicalSpringKotlinTest {
6565

6666
@Test
6767
fun testRawCountAllRows() {
68-
val countStatement = count(Person) {
68+
val countStatement = countFrom(Person) {
6969
allRows()
7070
}
7171

@@ -188,7 +188,7 @@ class CanonicalSpringKotlinTest {
188188

189189
val record = PersonRecord(100, "Joe", "Jones", Date(), "Yes", "Developer", 1)
190190

191-
val insertStatement = insert(record, Person) {
191+
val insertStatement = insert(record).into(Person) {
192192
map(id).toProperty("id")
193193
map(firstName).toProperty("firstName")
194194
map(lastName).toProperty("lastName")

0 commit comments

Comments
 (0)