0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Kotlin】Exposedで1行だけSelectしたい場合の対応

Posted at

概要

ExposedはKotlinで使用できるO/Rマッパーです。ざっくりどんな雰囲気かというのは、ExposedのDSL/DAOサンプル集を参照頂ければと思います。
今回は1行だけSelectしたい場合どうするのか、というのをメモ書きします。例えば、IDとか指定してSelectし返ってくるのが1行か0行かという場合、どう書くのが良いかということですね。(listとして取得し、行数を判定しても良いと言えば良いのですが)

対応

どう対応すれば良いかは、stackoverflowの記事Kotlin Exposed SELECT single recordが参考になります。
対応としてまずは、limit(1)で取得するレコードを1行に限定した上で、single()メソッドを呼び出せば実現できそうです。
ただ、single()はレコードがなかった場合exceptionが発生するので、【Kotlin】find, firstOrNull, singleOrNullの違いは?調べてみました!の記事に紹介されている、firstOrNullsingleOrNullを使った方が良さそうですね。

実装サンプル

DSLでの実装を前提としています。

transaction {
    // 作成したユーザテーブルにidの値でSelectをかける想定
    Users.select { Users.id.eq(id) }
        .limit(1).firstOrNull()?.also {
            // 取得できた場合の処理をここに書く
        } ?: run {
            // 取得できなかった場合の処理をここに書く
        }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?