This repository was archived by the owner on Jan 20, 2023. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +20
-10
lines changed
src/main/kotlin/com/mapk/krowmapper Expand file tree Collapse file tree 1 file changed +20
-10
lines changed Original file line number Diff line number Diff line change @@ -17,24 +17,34 @@ import kotlin.reflect.jvm.jvmName
17
17
18
18
class ParameterForMap private constructor(
19
19
val param : KParameter ,
20
- private val name : String ,
20
+ name : String ,
21
21
parameterKClazz : KClass <* >
22
22
) {
23
- private val javaClazz: Class <* > = parameterKClazz.java
24
- private val deserializer: KFunction <* >?
23
+ private val objectGetter: (ResultSet ) -> Any?
25
24
26
25
init {
27
- deserializer = parameterKClazz.getDeserializer()
28
- }
26
+ val deserializer = parameterKClazz.getDeserializer()
27
+
28
+ objectGetter = if (deserializer != null ) {
29
+ val targetClass = deserializer.parameters.single().type.classifier as KClass <* >
29
30
30
- fun getObject (rs : ResultSet ): Any? = when {
31
- javaClazz.isEnum -> EnumMapper .getEnum(javaClazz, rs.getString(name))
32
- else -> {
33
- val value: Any? = rs.getObject(name, javaClazz)
34
- deserializer?.call(value) ? : value
31
+ {
32
+ deserializer.call(it.getObject(name, targetClass.java))
33
+ }
34
+ } else {
35
+ {
36
+ val clazz = parameterKClazz.java
37
+
38
+ when {
39
+ clazz.isEnum -> EnumMapper .getEnum(clazz, it.getString(name))
40
+ else -> it.getObject(name, clazz)
41
+ }
42
+ }
35
43
}
36
44
}
37
45
46
+ fun getObject (rs : ResultSet ): Any? = objectGetter(rs)
47
+
38
48
companion object {
39
49
fun newInstance (param : KParameter , propertyNameConverter : (String ) -> String = { it }): ParameterForMap {
40
50
return ParameterForMap (
You can’t perform that action at this time.
0 commit comments