Skip to content

Commit 6cb91e5

Browse files
committed
Convert the Kotlin tests to use the new type handler support
1 parent b7b4206 commit 6cb91e5

File tree

10 files changed

+334
-190
lines changed

10 files changed

+334
-190
lines changed

src/main/java/org/mybatis/dynamic/sql/SqlColumn.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.Objects;
2020
import java.util.Optional;
2121

22+
import org.jetbrains.annotations.NotNull;
2223
import org.mybatis.dynamic.sql.render.RenderingStrategy;
2324
import org.mybatis.dynamic.sql.render.TableAliasCalculator;
2425

@@ -115,19 +116,22 @@ public String renderWithTableAlias(TableAliasCalculator tableAliasCalculator) {
115116
public Optional<RenderingStrategy> renderingStrategy() {
116117
return Optional.ofNullable(renderingStrategy);
117118
}
118-
119+
120+
@NotNull
119121
public <S> SqlColumn<S> withTypeHandler(String typeHandler) {
120122
SqlColumn<S> column = new SqlColumn<>(this);
121123
column.typeHandler = typeHandler;
122124
return column;
123125
}
124126

127+
@NotNull
125128
public <S> SqlColumn<S> withRenderingStrategy(RenderingStrategy renderingStrategy) {
126129
SqlColumn<S> column = new SqlColumn<>(this);
127130
column.renderingStrategy = renderingStrategy;
128131
return column;
129132
}
130133

134+
@NotNull
131135
public <S> SqlColumn<S> withParameterTypeConverter(ParameterTypeConverter<S, ?> parameterTypeConverter) {
132136
SqlColumn<S> column = new SqlColumn<>(this);
133137
column.parameterTypeConverter = parameterTypeConverter;

src/test/java/examples/spring/PersonTemplateTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ void testSelectAllOrdered() {
9797

9898
@Test
9999
void testSelectDistinct() {
100-
Buildable<SelectModel> selectStatement = select(id, firstName, lastName, birthDate, employed, occupation, addressId)
100+
Buildable<SelectModel> selectStatement = selectDistinct(id, firstName, lastName, birthDate, employed, occupation, addressId)
101101
.from(person)
102102
.where(id, isGreaterThan(1))
103103
.or(occupation, isNull());
@@ -107,6 +107,46 @@ void testSelectDistinct() {
107107
assertThat(rows).hasSize(5);
108108
}
109109

110+
@Test
111+
void testSelectWithUnion() {
112+
Buildable<SelectModel> selectStatement = select(id, firstName, lastName, birthDate, employed, occupation, addressId)
113+
.from(person)
114+
.where(id, isEqualTo(1))
115+
.union()
116+
.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
117+
.from(person)
118+
.where(id, isEqualTo(2))
119+
.union()
120+
.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
121+
.from(person)
122+
.where(id, isEqualTo(2));
123+
124+
125+
List<PersonRecord> rows = template.selectList(selectStatement, personRowMapper);
126+
127+
assertThat(rows).hasSize(2);
128+
}
129+
130+
@Test
131+
void testSelectWithUnionAll() {
132+
Buildable<SelectModel> selectStatement = select(id, firstName, lastName, birthDate, employed, occupation, addressId)
133+
.from(person)
134+
.where(id, isEqualTo(1))
135+
.union()
136+
.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
137+
.from(person)
138+
.where(id, isEqualTo(2))
139+
.unionAll()
140+
.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
141+
.from(person)
142+
.where(id, isEqualTo(2));
143+
144+
145+
List<PersonRecord> rows = template.selectList(selectStatement, personRowMapper);
146+
147+
assertThat(rows).hasSize(3);
148+
}
149+
110150
@Test
111151
void testSelectWithTypeHandler() {
112152
Buildable<SelectModel> selectStatement = select(id, firstName, lastName, birthDate, employed, occupation, addressId)

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

Lines changed: 0 additions & 23 deletions
This file was deleted.

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

Lines changed: 108 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,8 @@ import org.mybatis.dynamic.sql.util.kotlin.spring.*
3232
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
3333
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder
3434
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
35-
import java.sql.ResultSet
3635
import java.util.*
3736

38-
fun personRowMapper(rs: ResultSet, rowNum: Int) =
39-
PersonRecord().apply {
40-
id = rs.getInt(1)
41-
firstName = rs.getString(2)
42-
lastName = rs.getString(3)
43-
birthDate = rs.getTimestamp(4)
44-
employed = rs.getString(5)
45-
occupation = rs.getString(6)
46-
addressId = rs.getInt(7)
47-
}
48-
4937
class CanonicalSpringKotlinTemplateDirectTest {
5038
private lateinit var template: NamedParameterJdbcTemplate
5139

@@ -139,7 +127,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
139127
where(id, isLessThan(4)) {
140128
or(occupation, isNotNull())
141129
}
142-
and(employed, isEqualTo("Yes"))
130+
and(employed, isEqualTo(true))
143131
}
144132

145133
assertThat(rows).isEqualTo(4)
@@ -150,7 +138,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
150138
val rows = template.deleteFrom(Person) {
151139
where(id, isLessThan(4))
152140
or(occupation, isNotNull()) {
153-
and(employed, isEqualTo("Yes"))
141+
and(employed, isEqualTo(true))
154142
}
155143
}
156144

@@ -162,7 +150,7 @@ class CanonicalSpringKotlinTemplateDirectTest {
162150
val rows = template.deleteFrom(Person) {
163151
where(id, isLessThan(4))
164152
and(occupation, isNotNull()) {
165-
and(employed, isEqualTo("Yes"))
153+
and(employed, isEqualTo(true))
166154
}
167155
}
168156

@@ -171,14 +159,14 @@ class CanonicalSpringKotlinTemplateDirectTest {
171159

172160
@Test
173161
fun testInsert() {
174-
val record = PersonRecord(100, "Joe", "Jones", Date(), "Yes", "Developer", 1)
162+
val record = PersonRecord(100, "Joe", LastName("Jones"), Date(), true, "Developer", 1)
175163

176164
val rows = template.insert(record, Person) {
177165
map(id).toProperty("id")
178166
map(firstName).toProperty("firstName")
179-
map(lastName).toProperty("lastName")
167+
map(lastName).toProperty("lastNameAsString")
180168
map(birthDate).toProperty("birthDate")
181-
map(employed).toProperty("employed")
169+
map(employed).toProperty("employedAsString")
182170
map(occupation).toPropertyWhenPresent("occupation", record::occupation)
183171
map(addressId).toProperty("addressId")
184172
}
@@ -191,16 +179,41 @@ class CanonicalSpringKotlinTemplateDirectTest {
191179
val rows = template.insertInto(Person) {
192180
set(id).toValue(100)
193181
set(firstName).toValue("Joe")
194-
set(lastName).toValue("Jones")
182+
set(lastName).toValue(LastName("Jones"))
195183
set(birthDate).toValue(Date())
196-
set(employed).toValue("Yes")
184+
set(employed).toValue(true)
197185
set(occupation).toValue("Developer")
198186
set(addressId).toValue(1)
199187
}
200188

201189
assertThat(rows).isEqualTo(1)
202190
}
203191

192+
@Test
193+
fun testMultiRowInsert() {
194+
TODO()
195+
}
196+
197+
@Test
198+
fun testBatchInsert() {
199+
TODO()
200+
}
201+
202+
@Test
203+
fun testGeneralInsertWithGeneratedKey() {
204+
TODO()
205+
}
206+
207+
@Test
208+
fun testInsertWithGeneratedKey() {
209+
TODO()
210+
}
211+
212+
@Test
213+
fun testMultiRowInsertWithGeneratedKey() {
214+
TODO()
215+
}
216+
204217
@Test
205218
fun testSelectAll() {
206219
val rows = template.select(id, firstName, lastName, birthDate, employed, occupation, addressId)
@@ -229,9 +242,73 @@ class CanonicalSpringKotlinTemplateDirectTest {
229242
with(rows[0]) {
230243
assertThat(id).isEqualTo(1)
231244
assertThat(firstName).isEqualTo("Fred")
232-
assertThat(lastName).isEqualTo("Flintstone")
245+
assertThat(lastName!!.name).isEqualTo("Flintstone")
233246
assertThat(birthDate).isNotNull()
234-
assertThat(employed).isEqualTo("Yes")
247+
assertThat(employed).isTrue()
248+
assertThat(occupation).isEqualTo("Brontosaurus Operator")
249+
assertThat(addressId).isEqualTo(1)
250+
}
251+
}
252+
253+
@Test
254+
fun testSelectWithUnion() {
255+
val rows = template.select(
256+
id, firstName, lastName, birthDate, employed, occupation, addressId)
257+
.from(Person) {
258+
where(id, isEqualTo(1))
259+
union {
260+
select(id, firstName, lastName, birthDate, employed, occupation, addressId)
261+
.from(Person) {
262+
where(id, isEqualTo(2))
263+
}
264+
}
265+
union {
266+
select(id, firstName, lastName, birthDate, employed, occupation, addressId)
267+
.from(Person) {
268+
where(id, isEqualTo(2))
269+
}
270+
}
271+
}.withRowMapper(::personRowMapper)
272+
273+
assertThat(rows).hasSize(2)
274+
with(rows[0]) {
275+
assertThat(id).isEqualTo(1)
276+
assertThat(firstName).isEqualTo("Fred")
277+
assertThat(lastName!!.name).isEqualTo("Flintstone")
278+
assertThat(birthDate).isNotNull()
279+
assertThat(employed).isTrue()
280+
assertThat(occupation).isEqualTo("Brontosaurus Operator")
281+
assertThat(addressId).isEqualTo(1)
282+
}
283+
}
284+
285+
@Test
286+
fun testSelectWithUnionAll() {
287+
val rows = template.select(
288+
id, firstName, lastName, birthDate, employed, occupation, addressId)
289+
.from(Person) {
290+
where(id, isEqualTo(1))
291+
union {
292+
select(id, firstName, lastName, birthDate, employed, occupation, addressId)
293+
.from(Person) {
294+
where(id, isEqualTo(2))
295+
}
296+
}
297+
unionAll {
298+
select(id, firstName, lastName, birthDate, employed, occupation, addressId)
299+
.from(Person) {
300+
where(id, isEqualTo(2))
301+
}
302+
}
303+
}.withRowMapper(::personRowMapper)
304+
305+
assertThat(rows).hasSize(3)
306+
with(rows[0]) {
307+
assertThat(id).isEqualTo(1)
308+
assertThat(firstName).isEqualTo("Fred")
309+
assertThat(lastName!!.name).isEqualTo("Flintstone")
310+
assertThat(birthDate).isNotNull()
311+
assertThat(employed).isTrue()
235312
assertThat(occupation).isEqualTo("Brontosaurus Operator")
236313
assertThat(addressId).isEqualTo(1)
237314
}
@@ -248,9 +325,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
248325
with(record!!) {
249326
assertThat(id).isEqualTo(1)
250327
assertThat(firstName).isEqualTo("Fred")
251-
assertThat(lastName).isEqualTo("Flintstone")
328+
assertThat(lastName!!.name).isEqualTo("Flintstone")
252329
assertThat(birthDate).isNotNull()
253-
assertThat(employed).isEqualTo("Yes")
330+
assertThat(employed).isTrue()
254331
assertThat(occupation).isEqualTo("Brontosaurus Operator")
255332
assertThat(addressId).isEqualTo(1)
256333
}
@@ -304,33 +381,16 @@ class CanonicalSpringKotlinTemplateDirectTest {
304381
where(id, isLessThan(4))
305382
orderBy(id)
306383
limit(3)
307-
}.withRowMapper { rs, _ ->
308-
val record = PersonWithAddress()
309-
record.id = rs.getInt(1)
310-
record.firstName = rs.getString(2)
311-
record.lastName = rs.getString(3)
312-
record.birthDate = rs.getTimestamp(4)
313-
record.employed = rs.getString(5)
314-
record.occupation = rs.getString(6)
315-
316-
val address = AddressRecord()
317-
record.address = address
318-
address.id = rs.getInt(7)
319-
address.streetAddress = rs.getString(8)
320-
address.city = rs.getString(9)
321-
address.state = rs.getString(10)
322-
323-
record
324-
}
384+
}.withRowMapper(::personWithAddressRowMapper)
325385

326386

327387
assertThat(rows).hasSize(3)
328388
with(rows[0]) {
329389
assertThat(id).isEqualTo(1)
330390
assertThat(firstName).isEqualTo("Fred")
331-
assertThat(lastName).isEqualTo("Flintstone")
391+
assertThat(lastName!!.name).isEqualTo("Flintstone")
332392
assertThat(birthDate).isNotNull()
333-
assertThat(employed).isEqualTo("Yes")
393+
assertThat(employed).isTrue()
334394
assertThat(occupation).isEqualTo("Brontosaurus Operator")
335395
assertThat(address?.id).isEqualTo(1)
336396
assertThat(address?.streetAddress).isEqualTo("123 Main Street")
@@ -358,9 +418,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
358418
with(rows[0]) {
359419
assertThat(id).isEqualTo(1)
360420
assertThat(firstName).isEqualTo("Fred")
361-
assertThat(lastName).isEqualTo("Flintstone")
421+
assertThat(lastName!!.name).isEqualTo("Flintstone")
362422
assertThat(birthDate).isNotNull()
363-
assertThat(employed).isEqualTo("Yes")
423+
assertThat(employed).isTrue()
364424
assertThat(occupation).isEqualTo("Brontosaurus Operator")
365425
assertThat(addressId).isEqualTo(1)
366426
}
@@ -385,9 +445,9 @@ class CanonicalSpringKotlinTemplateDirectTest {
385445
with(rows[2]) {
386446
assertThat(id).isEqualTo(4)
387447
assertThat(firstName).isEqualTo("Barney")
388-
assertThat(lastName).isEqualTo("Rubble")
448+
assertThat(lastName!!.name).isEqualTo("Rubble")
389449
assertThat(birthDate).isNotNull()
390-
assertThat(employed).isEqualTo("Yes")
450+
assertThat(employed).isTrue()
391451
assertThat(occupation).isEqualTo("Brontosaurus Operator")
392452
assertThat(addressId).isEqualTo(2)
393453
}

0 commit comments

Comments
 (0)