KotlinでSQLクエリを実行して取得したリストを参照する

一つ上の階層へ

fun function(): List<//data class//> {
  return dsl
    .select(
      column1,
      column2,
      ...
    )
    .from(//table1//)
    .leftOuterJoin(//table2//)
    .on(Tables1.column_x.eq(Tables2.column_y))
    .where(Tables1.columnM.eq(xxx))
    .and(//condition2//)
    .fetch().map {
        DataClass(
          it[Tables1.column4],
          it[Tables1.column6],...
          )
        )
    }.filterNotNull()
}

KotlinのJooqによるクエリで fetch() メソッドで取得したリストは、Jooqの Record クラスのオブジェクトのリストであり、各 Record オブジェクトはテーブルの各カラムに対応するフィールドを持っている。 各カラムの値を取得するにはgetValue()メソッドを使用する。

val resultList = create.select().from(TABLE_NAME).fetch().map { it }
 
resultList.forEach { 
    val id = it.getValue(ID) // IDカラムの値を取得する
    val name = it.getValue(NAME) // NAMEカラムの値を取得する
    val age = it.getValue(AGE) // AGEカラムの値を取得する
    println("id: $id, name: $name, age: $age")
}