ユーザ用ツール

サイト用ツール


kotlin:cases:jdbctemplate

JDBC テンプレートでレコードを取得して使う

params = mapOf (
  "A" to "a"
  "B" to "b"
  )
 
jdbcTemplate.queryForStream(getSql(), params) { rs, _ ->
    val rowData = mutableListOf<Pair<String, Any>>() // キーと値のペアを格納するリストを作成
 
    // クエリ結果のメタデータを使用して各カラムのデータをマッピング
    for (i in 1..rs.metaData.columnCount) {
        // getColumnLabel(i) でカラムのラベル(名前)を取得し、getObject(i) で値を取得
        rowData.add(rs.metaData.getColumnLabel(i) to rs.getObject(i))
    }
 
    rowData // 1行のデータをキーと値のペアのリストとして返す
}.use { stream ->
    // クエリの結果ストリームを完了させるために、useを使用してストリームを消費する
    stream.forEach { row ->
        val id = row.firstOrNull { it.first == "id" }?.second
        val name = row.firstOrNull { it.first == "name" }?.second
        // 他のカラムを適宜参照
 
        // ここで得られたデータを処理する
        processRowData(id, name)
    }
}

ここで、firstOrNullはコレクション(リストや配列など)から最初に条件を満たす要素を取得する関数です。条件を満たす要素が見つからない場合はnullを返します。 .firstと.secondはPairクラスのメソッドで、キーと値のペアからそれぞれキーまたは値を取得するために使用される。

// Pair の first と second の使用例
val pair: Pair<String, Any?> = data.first()
val key: String = pair.first // キーを取得
val value: Any? = pair.second // 値を取得
kotlin/cases/jdbctemplate.txt · 最終更新: 2023/08/04 17:39 by mikoto