Scala
scalikeJDBC

scalikeJDBCを使ってみたメモ

More than 3 years have passed since last update.

scalaのDBアクセスライブラリのscalikeJDBCを使ってみたので、忘れないようにメモを残します。
公式のドキュメントとかcookbookがちゃんとしているので、ほぼ写経だけれども。

idとnameというカラムのあるusersテーブルから、idを指定してレコードを取得するコード。
取得したレコードは Userというケースクラスで返す感じ。

import scalikejdbc._
import scalikejdbc.SQLInterpolation._

case class User(id:Long, name:String)

object User extends SQLSyntaxSupport[User] {
  override val tableName = "users"
  private val alias = syntax("u")

  def find(id:Long)(implicit session:DBSession = ReadOnlyAutoSession):Option[User] = withSQL {
    select.from(User as alias)
          .where.eq(alias.id, id)
  }.map(User(alias.resultName, _)).single.apply

  private def apply(u:ResultName[User], rs:WrappedResultSet):User = User(rs.long(u.id), rs.string(u.name))
}

ちょっと使っただけなので、User.syntax("u") でエリアスを定義するのが必要なのかどうかは、まだよくわかってない。。

あと、ついORM風な書き方ができるようにしてしまうけれど、そんな感じにするなら、Skinny FrameworkのORMを使った方がよさそう。
https://github.com/skinny-framework/skinny-framework