squerylのチュートリアルを見たけれどコードが断片になっているのでぱっと見で分かりにかった。
ひとまとめのサンプルコードがあった方が分かりやすい。
環境
-scala2.8.1
-squeryl0.9.4-RC6
-h2database1.3.154
今回の場合、DBをメモリに置いてるのでtransaction毎にテーブルが消えることに注意。
1トランザクションで処理する必要がある。
以下、一通り動作するコード。
import org.squeryl._
import org.squeryl.adapters._
import org.squeryl.Session
import org.squeryl.SessionFactory
import org.squeryl.PrimitiveTypeMode._
class Author(val id: Long,
val firstName: String,
val lastName: String,
val email: Option[String]) {
def this() = this(0,"","",Some(""))
}
object MySchema extends Schema {
val authors = table[Author]
}
object App {
def main(args: Array[String]):Unit = {
Class.forName("org.h2.Driver")
SessionFactory.concreteFactory = Some(() =>
Session.create(
java.sql.DriverManager.getConnection("jdbc:h2:mem:db1"),
new H2Adapter))
transaction {
MySchema.printDdl
MySchema.create
MySchema.authors.insert(new Author(1,"ore","desuyo", Some("example@example.com")))
println(MySchema.authors.where(a => a.id === 1).single.firstName)
}
}
}