Scala Play 2.x(6) MySQLに接続してAnormでCRUD操作する

今週もこちらのハンズオンとなっております。

とりあえず、Homebrewなどでmysqlをインストールします。私の場合、前からあったのを使いました。

CREATE DATABASE gyro;

GRANT ALL PRIVILEGES ON gyro.* TO '[user name]'@'localhost' IDENTIFIED BY '[password]';

 

で、conf/application.confにこう

db.default.driver=com.mysql.jdbc.Driver

db.default.url="jdbc:mysql://localhost/gyro"

db.default.user="[user name]"

db.default.password="[password]"

db.default.logStatements=true

...

logger.root=DEBUG

記事中だとBuild.scalaを編集ってなってるけど、built.sbtにこう

libraryDependencies ++= Seq(

  jdbc,

  anorm,

  cache,

  "mysql" % "mysql-connector-java" % "5.1.24"

)

でplay consoleからreload,dependencies,eclipseでOK。

つづいてevolution。conf/evolution/defaultフォルダ名を作って、その中に1.sql,2.sql...とファイルを作成していきます。その中に# --- !Upsと# --- !Downsを書き、導入時をUps、戻すときをDownsに記載します。

そのまま記事通りですが、このscriptを導入するにはWeb UIからしかないのだろうか。。。

 

つづいて、DBアクセス。Anormで。

DML系は基本的にはSQL()にクエリ書いて({}でプレースホルダーつくって)、onでプレースホルダーに入れる値指定して、executeなんとかで実行という感じ。

参照はStream APIやParser APIでできる。。。のだけど、Parser APIのcombinatorというか逐次合成の~がいまいちわからない。。。いや、parserが前段が成功したら逐次適用されていくというのはわかるのだけど。。。

 

今日は以上です。