@@ -2,20 +2,40 @@ package com.mapk.krowmapper
2
2
3
3
import com.mapk.core.KFunctionForCall
4
4
import com.mapk.core.toKConstructor
5
+ import org.springframework.core.convert.ConversionService
6
+ import org.springframework.core.convert.support.DefaultConversionService
5
7
import org.springframework.jdbc.core.RowMapper
6
8
import java.sql.ResultSet
7
9
import kotlin.reflect.KClass
8
10
import kotlin.reflect.KFunction
9
11
10
- class KRowMapper <T : Any > private constructor(private val function : KFunctionForCall <T >) : RowMapper<T> {
11
- constructor (function: KFunction <T >, parameterNameConverter: ((String ) -> String )? = null ) : this (
12
- KFunctionForCall (function, parameterNameConverter)
13
- )
12
+ class KRowMapper <T : Any > private constructor(
13
+ private val function : KFunctionForCall <T >,
14
+ conversionService : ConversionService ?
15
+ ) : RowMapper<T> {
16
+ constructor (
17
+ function: KFunction <T >,
18
+ conversionService: ConversionService ,
19
+ parameterNameConverter: ((String ) -> String )? = null
20
+ ) : this (KFunctionForCall (function, parameterNameConverter), conversionService)
14
21
15
- constructor (clazz: KClass <T >, parameterNameConverter: ((String ) -> String )? = null ) : this (
16
- clazz.toKConstructor(parameterNameConverter)
17
- )
22
+ constructor (
23
+ function: KFunction <T >,
24
+ parameterNameConverter: ((String ) -> String )? = null
25
+ ) : this (KFunctionForCall (function, parameterNameConverter), null )
18
26
27
+ constructor (
28
+ clazz: KClass <T >,
29
+ conversionService: ConversionService ,
30
+ parameterNameConverter: ((String ) -> String )? = null
31
+ ) : this (clazz.toKConstructor(parameterNameConverter), conversionService)
32
+
33
+ constructor (
34
+ clazz: KClass <T >,
35
+ parameterNameConverter: ((String ) -> String )? = null
36
+ ) : this (clazz.toKConstructor(parameterNameConverter), null )
37
+
38
+ private val conversionService: ConversionService = conversionService ? : DefaultConversionService .getSharedInstance()
19
39
private val parameters: List <ParameterForMap <* , * >> =
20
40
function.requiredParameters.map { ParameterForMap .newInstance(it) }
21
41
0 commit comments