Technofara

Golangエンジニア!仕事で必要になって勉強した事とか、新しい事とか色々まとめたりを緩くやります。技術系と思考系だけにしておきます、

# play2(scala)からmysqlのデータ取得して、表示するまで

データの準備

前々回 http://shinofara.hateblo.jp/entry/2014/01/16/232308 作成した、Mysqlとテーブルを使います。

Userテーブルには以下のデータが入ってる状態にします。

insert into user(`name`,`email`,`password`) values('hoge_name','hoge@test.com','1234');
insert into user(`name`,`email`,`password`) values('hoge_name_2','hoge2@test.com','5678');

Controllerからデータ取得

ライブラリをimportする記述追加

import play.api.Play.current  
import play.api.mvc.Results._ 
import play.api.db._          
import anorm._                

レコードを全件取得して、Listへ格納

implicit val connection = DB.getConnection() 
val selectUsers = SQL("Select * from user")  
val users = selectUsers().map(row =>         
  Map('name -> row[String]("name"),          
      'email -> row[String]("email"))).toList

viewテンプレートへデータを渡す

Ok(views.html.mydb("DBつないでみたよ", users))

ViewTemplateで表示

app/views/mydb.scala.html

@(message:String,userList:List[Map[Symbol, String]])
@main("show scala templates") {
    <h1>@message</h1>
    <ul>
    @userList.map { user =>
      <li><p>@user('name) -> @user('email)</p></li>
    }
    </ul>
}

ブラウザで確認すると DBつないでみたよ hoge_name -> hoge@test.com hoge_name_2 -> hoge2@test.com と表示されました。

もう少し、scalaなりplay2なりの記述法を覚えてから、 次は、ORMに挑戦しようと思います。