====== JDBC テンプレートでレコードを取得して使う ====== params = mapOf ( "A" to "a" "B" to "b" ) jdbcTemplate.queryForStream(getSql(), params) { rs, _ -> val rowData = mutableListOf>() // キーと値のペアを格納するリストを作成 // クエリ結果のメタデータを使用して各カラムのデータをマッピング 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 = data.first() val key: String = pair.first // キーを取得 val value: Any? = pair.second // 値を取得