この記事の所要時間: 1313

この記事の前にPlay Frameworkを使ってみるの記事を2つ書いています。
そちらも合わせて御覧ください。
Play Frameworkを使ってみる vol.1
Play Frameworkを使ってみる vol.2

もう、そろそろ環境設定とか飽きた・・・・

ので、データベースつないでゴニョゴニョやりたいと思います。


・・・・とは言え

DB接続にも設定がありますので、我慢して設定をします。

つなぎ方はvol.1で動いていた初期ページに書いていました。

Need to connect to a database?

You can quickly set up a developement database (either in memory or written to the filesystem),
by adding these lines to the conf/application.conf file:

db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"

If you need to connect to another JDBC compliant database, first add the corresponding driver library
to your application dependencies:

val appDependencies = Seq(
  "mysql" % "mysql-connector-java" % "5.1.18"
)

And then add the corresponding JDBC configuration to the conf/application.conf file:

db.url=jdbc:mysql:database_name
db.driver=org.mysql.Driver
db.user=root
db.pass=secret

なるほどなるほど・・・(T_T)
英語よくわかんねw
このままHSQLでもいいんだろうけど、結局MySQLになるだろうからはじめからMySQLでやっておきたい。

まぁ、雰囲気だなw と思ったら。あ、そうだ、日本語版があったんだった・・・

というわけでこちら参考サイトです↓
Play 2.0 ドキュメント

あー
MySQLのドライバがないのか・・・・

なんと、SBTで自動取得してくれるとのこと・・・
下記のようにやればいいみたい。

Build.scala を下記のように修正しました。

val appDependencies = Seq(
// Add your project dependencies here,
)

の部分を

val appDependencies = Seq(
“mysql” % “mysql-connector-java” % “5.1.21”
)

※5.1.21 の部分は持ってきたいドライバのバージョンです。

それから
conf/application.conf
をいじります。

この例ではMySQLに
データベース名:playsamp
ユーザ名   :playsamp
パスワード  :playsamp
でデータベースを作ってあるとして書いています。
適宜変更してください。

# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
# db.default.driver=org.h2.Driver
# db.default.url=”jdbc:h2:mem:play”
# db.default.user=sa
# db.default.password=
db.default.driver=com.mysql.jdbc.Driver
db.default.url=”jdbc:mysql://localhost/playsamp?characterEncoding=UTF8″
db.default.user=playsamp
db.default.password=playsamp

ちなみにMySQLはxamppがインストールしてあったのでそのMySQLを使用しています。
Apacheは今回上げる必要はありませんが、phpMyAdminを利用する際は起動が必要です。

とりあえず、設定が終わったら、いつものように・・・
このプロジェクトを起動・・・

vol.1 で作ったりしたパスを通してコマンドプロンプト上げるバッチで起動するか。
コマンドプロンプトたちあげて

set path=%path%;c:\dev\play;

としてからvol.1で作ったアプリケーションのなかに移動して

cd c:\dev\workspace\playsamp\app

アプリケーション起動!!

play run

このとき、Build.scala にて設定されたものがなければDOWNLOADされます。

[info] Loading project definition from C:\dev\workspace\playsamp\app\project\pro
ject
[info] Updating {file:/C:/dev/workspace/playsamp/app/project/project/}default-b9
e616…
[info] Resolving org.scala-sbt#sbt_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#main_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#actions_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#classfile_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#io_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#control_2.9.1;0.11.3 …
[info] Resolving org.scala-lang#scala-library;2.9.1 …
[info] Resolving org.scala-sbt#interface;0.11.3 …
[info] Resolving org.scala-sbt#logging_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#process_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#classpath_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#launcher-interface_2.9.1;0.11.3 …
[info] Resolving org.scala-lang#scala-compiler;2.9.1 …
[info] Resolving org.scala-sbt#incremental-compiler_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#collections_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#api_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#persist_2.9.1;0.11.3 …
[info] Resolving org.scala-tools.sbinary#sbinary_2.9.0;0.4.0 …
[info] Resolving org.scala-sbt#compile_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#ivy_2.9.1;0.11.3 …
[info] Resolving org.apache.ivy#ivy;2.2.0 …
[info] Resolving com.jcraft#jsch;0.1.46 …
[info] Resolving commons-httpclient#commons-httpclient;3.1 …
[info] Resolving commons-logging#commons-logging;1.0.4 …
[info] Resolving commons-codec#commons-codec;1.2 …
[info] Resolving org.scala-sbt#completion_2.9.1;0.11.3 …
[info] Resolving jline#jline;0.9.94 …
[info] Resolving org.scala-sbt#run_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#task-system_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#tasks_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#tracking_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#cache_2.9.1;0.11.3 …
[info] Resolving org.scala-sbt#testing_2.9.1;0.11.3 …
[info] Resolving org.scala-tools.testing#test-interface;0.5 …
[info] Resolving org.scala-sbt#compiler-interface;0.11.3 …
[info] Resolving org.scala-sbt#precompiled-2_8_2;0.11.3 …
[info] Resolving org.scala-sbt#precompiled-2_8_1;0.11.3 …
[info] Resolving org.scala-sbt#precompiled-2_9_2;0.11.3 …
[info] Done updating.
[info] Loading project definition from C:\dev\workspace\playsamp\app\project
[info] Set current project to app (in build file:/C:/dev/workspace/playsamp/app/
)
[app] $ run

[info] Updating {file:/C:/dev/workspace/playsamp/app/}app…
[info] Resolving org.hibernate.javax.persistence#hibernate-jpa-2.0-api;1.0.1.Fin

[info] downloading http://repo.typesafe.com/typesafe/releases/mysql/mysql-connec
tor-java/5.1.21/mysql-connector-java-5.1.21.jar …
[info] [SUCCESSFUL ] mysql#mysql-connector-java;5.1.21!mysql-connector-java.jar
(3053ms)
[info] Done updating.
— (Running the application from SBT, auto-reloading is enabled) —

[info] play – Listening for HTTP on port 9000…

(Server started, use Ctrl+D to stop and go back to the console…)

そして、ブラウザで「http://localhost:9000」を見てみます。

・・・・画面は全く変わりません。(なにも作ってないから当たり前w)

しかし、コンソールを見ると・・・

— (Running the application from SBT, auto-reloading is enabled) —

[info] play – Listening for HTTP on port 9000…

(Server started, use Ctrl+D to stop and go back to the console…)

[info] play – database [default] connected at jdbc:mysql://localhost/playsamp?ch
aracterEncoding=UTF8
[info] play – Application started (Dev)

ああ、しっかりと MySQLにコネクトしているのがわかります。

今日は、こんなところで・・・・

いやぁ、実は、これ書きながら
一時はMySQLのDriverダウンロードしたりして
いろいろ悩んだわw

一応、これでも動いた・・・という感じで

書いておきます。

どうしても動かない場合はこれでもいいのかな・・・と。

久しぶりにMySQLドライバーをダウンロード。
MySQL::Download Connector/j

で解凍した「mysql-connector-java-5.1.21」フォルダ ※20120823時点最新版
を playframeworkのディレクトリのrepository/localに突っ込みました。
(Vol.1,vol.2のままで行くとここは「C:\dev\play\repository\local」です。)

そして、Eclipse上でクラスパスを通します。
(ビルド・パスに追加 ※アプリケーション名を右クリック→ビルド・パス→ビルド・パスの構成)
MySQLコネクタをビルド・パスに追加

Play Framework その他の記事