
KotlinでDBからJson形式をdata classにマッピングする方法
2022/07/17前提
仕事先の環境が, DB接続はjdbiを利用し, Json mappingはJacksonを利用しているため, この2つでの実装になる.
実装
1. build.gradle.kts に以下を追加
implementation("org.jdbi:jdbi3-jackson2")2. jdbiにJacksonを利用するように設定する
private val jdbi: Jdbi by lazy {
Jdbi.create(dataSource)
.apply { getConfig(Jackson2Config::class.java).mapper = jacksonObjectMapper() }
}3. data classにマッピングする
val sql = """
SELECT
json_agg(json_build_object(
'hoge', hoge,
'fuga', fuga
)) as hogefugas
FROM hoge_fuga
"""
handle.createQuery(sql)
.mapTo(Row)
data class Row(
@Json
hogefugas: List<HogeFuga>,
)
data class HogeFuga(
val hoge: String,
val fuga: String,
)Twitterフォロー待ってます!