焼け石に肉

新米プログラマの学習記録日記です。Scalaに興味があるので、ScalaとPlay Frameworkの勉強メモを残していこうと思います。

【Scala】Scala&Play Frameworkで掲示板を作ってみる Part1【Play Framework】

タイトルどおりです。
掲示板アプリを作って、ScalaとPlay Frameworkの勉強です。

環境

Scala:2.11.11

Play:2.5

MySQL:6.0.6

概要

簡単な掲示板アプリです。
メッセージの作成、編集、削除ができます。
DBへの書き込みであったり、データの抽出といったところを学習したいと思います。

f:id:julius_hs:20180123215858j:plain

準備

用意したテーブルは、以下のとおりです。

messagesテーブル
+----+---------+---------------+---------------+---------------+
| id | body    | title         | create_at     | update_at     |
+----+---------+---------------+---------------+---------------+
build.sbt

MySQL用の依存関係を追加していきます。

libraryDependencies ++= Seq(
  "org.scalikejdbc"        %% "scalikejdbc"                  % "2.5.2",
  "org.scalikejdbc"        %% "scalikejdbc-config"           % "2.5.2",
  "org.scalikejdbc"        %% "scalikejdbc-test"             % "2.5.2" % Test,
  "org.skinny-framework"   %% "skinny-orm"                   % "2.3.7",
  "org.scalikejdbc"        %% "scalikejdbc-play-initializer" % "2.5.+",
  "ch.qos.logback"         % "logback-classic"               % "1.2.3",
  "org.scalikejdbc"        %% "scalikejdbc-jsr310"           % "2.5.2",
  "mysql"                  % "mysql-connector-java"          % "6.0.6",
  "com.adrianhurt"         %% "play-bootstrap"               % "1.1-P25-B3"
)
dev.conf

プロジェクト直下にenvディレクトリを作成し、その中にdev.confファイルを作成します。
そして、以下の通り記述します。

jdbcDriver = "com.mysql.cj.jdbc.Driver"
jdbcUrl = "jdbc:mysql://localhost:3306/【DB名】?autoReconnect=true&useSSL=false"
jdbcUserName = "【ユーザー】"
jdbcPassword = "【パスワード】"
application.conf

データベース接続情報を設定します。

include file("./env/dev.conf")

play.modules {
  enabled += "scalikejdbc.PlayModule"
}

db {
  default.driver=${jdbcDriver}
  default.url=${jdbcUrl}
  default.username=${jdbcUserName}
  default.password=${jdbcPassword}
}

scalikejdbc {
  global {
    loggingSQLAndTime.enabled = true
    loggingSQLAndTime.singleLineMode = true
    loggingSQLAndTime.logLevel = DEBUG
    loggingSQLAndTime.warningEnabled = true
    loggingSQLAndTime.warningThresholdMillis = 5
    loggingSQLAndTime.warningLogLevel = warn
  }
}

とりあえず、今回は以上です。
次回は、ルーティングとかを書いていきたいです。