Edited at

scalikeJDBCを使ってみたメモ

More than 5 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