以下の内容はhttps://uga-box.hatenablog.com/entry/2024/10/02/233825より取得しました。


【Exposed】SQLをExposedのDSLに変換するメモ

頭では浮かんでいるSQLをExposedの書き方に変換するのがつらいので、よく使うものをまとめておく

これは今後も更新していく

in句

単純に指定されたリスト(list)の値をもとに、テーブルのIDがそのリストに含まれるレコードを取得する場合

sql

SELECT * FROM samples where id in $list;

exposedのDSLで書き換え

import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction

fun fetchSamplesByIds(idList: List<Int>): List<SampleDTO> {
    return transaction {
        Samples.select {
            Samples.id inList idList
        }.map { row ->
            SampleDTO(
              id = row[Samples.id],
              name = row[Samples.name]
            )
        }
    }
}

あるカラム(idとname)を取得した後に、 id と name のMapを作りたい場合

sql

SELECT id, apple FROM samples where id in $list;

exposedのDSLで書き換え

import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction

fun fetchData(list: List<Int>): Map<Int, String>> {
    return transaction {
        Samples
            .slice(
                Samples.id,
                Samples.name
            )
            .select {
                Samples.id inList list
            }
            .associate {
                it[Samples.id] to it[Samples.name]
            }
    }
}
  • associateは Listの各要素をMapに変換するために使用している
  • associateは Pair を作成し、それをキーと値のMapに変換する



以上の内容はhttps://uga-box.hatenablog.com/entry/2024/10/02/233825より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14