頭では浮かんでいるSQLをExposedの書き方に変換するのがつらいので、よく使うものをまとめておく
これは今後も更新していく
in句
単純に指定されたリスト(list)の値をもとに、テーブルのIDがそのリストに含まれるレコードを取得する場合
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を作りたい場合
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に変換する