@@ -98,6 +98,9 @@ val dst: Dst = jdbcTemplate.query(query, KRowMapper(::Dst, /* 必要に応じた
98
98
99
99
また、` KRowMapper ` はデフォルトでは引数名によってカラムとの対応を見るため、「引数がキャメルケースでカラムはスネークケース」というような場合、引数名を変換する関数も渡す必要が有ります。
100
100
101
+ 必要に応じて値の変換のために` ConversionService ` を渡すこともできます。
102
+ 渡さなかった場合、` DefaultConversionService.sharedInstance ` がデフォルトとして利用されます。
103
+
101
104
### method reference(KFunction)からの初期化
102
105
` KRowMapper ` は` method reference ` から初期化できます。
103
106
@@ -230,13 +233,16 @@ val mapper: KRowMapper<Dst> = KRowMapper(::Dst, parameterNameConverter)
230
233
ただし、よりプレーンな` Kotlin ` に近い書き方をしたい場合にはこれらの機能を用いず、呼び出し対象メソッドで全ての初期化処理を書くことをお勧めします。
231
234
232
235
### 値のデシリアライズ
233
- ` KRowMapper ` は` java.sql.ResultSet ` から値の取得を行うため、デフォルトではこの実装でサポートされていない型を取得することはできません。
234
- この問題に対応するため、` KRowMapper ` ではデフォルトの変換機能に加え以下の3種類のデシリアライズ方法を提供しています。
236
+ ` KRowMapper ` は` BeanPropertyRowMapper ` 同様` ConversionService ` (デフォルトでは` DefaultConversionService.sharedInstance ` )を用いたデシリアライズをサポートしています。
237
+
238
+ これに加え、より明示的で柔軟性の高いデシリアライズ方法として、` KRowMapper ` では以下の3種類のデシリアライズ方法を提供しています。
235
239
236
240
1 . ` KColumnDeserializer ` アノテーションを利用したデシリアライズ
237
241
2 . デシリアライズアノテーションを自作してのデシリアライズ
238
242
3 . 複数引数からのデシリアライズ
239
243
244
+ これらのデシリアライズ方法は` ConversionService ` によるデシリアライズより優先的に適用されます。
245
+
240
246
#### KColumnDeserializerアノテーションを利用したデシリアライズ
241
247
自作のクラスで、かつ単一引数から初期化できる場合、` KColumnDeserializer ` アノテーションを用いたデシリアライズが利用できます。
242
248
` KColumnDeserializer ` アノテーションは、コンストラクタ、もしくは` companion object ` に定義したファクトリーメソッドに対して付与できます。
@@ -470,6 +476,3 @@ class Foo(
470
476
val description : String = " "
471
477
)
472
478
```
473
-
474
- #### Enumをデシリアライズする
475
- DBに格納された値と` Enum::name ` プロパティが一致する場合、特別な記述無しに` Enum ` をデシリアライズすることができます。
0 commit comments