【Play Framework】Play Framework [1-4] ~ 入門編 / Hello World with DB ~

はじめに

http://blogs.yahoo.co.jp/dk521123/36077949.html
の続き。
今回は、DB(MySQL)を使ったHelloWorldを作成する。

環境について

  + OS          : Windows10
  + JDK         : JDK1.8
  + Eclipse     : Mars.2 Release (4.5.2)
  + Play        : Play2.5.3(Streamy)
  + Data base   : MySQL
  + O/Rマッパー : Ebean

サンプル

 * ソースコードは以下の関連記事をベースにする。
http://blogs.yahoo.co.jp/dk521123/36077858.html

サンプルデータ:MySQL

CREATE TABLE person
(
  id char(8) NOT NULL PRIMARY KEY,
  name varchar(100),
  sex char(1)
);

INSERT INTO person(
            id, name, sex)
    VALUES ('X0000000', 'admin', 'm'),
           ('X0000001', 'Mike', 'm'),
           ('X0000002', 'Tom', 'm');
           
select * from person;

モデル

models/Person.java
package models;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import com.avaje.ebean.Model;

@Entity
@Table(name = "person")
public class Person extends Model {
  @Id
  @Column(name = "id")
  public String id;

  @Column(name = "name")
  public String name;

  @Column(name = "sex")
  public char sex;

  public static Find<String, Person> finder = new Find<String, Person>() {
  };
}

コントローラ

controllers/HelloWorldController.java
package controllers;

import java.util.List;

import models.Person;
import play.mvc.Controller;
import play.mvc.Result;
import views.html.*;

public class HelloWorldController extends Controller {
  public Result index() {
    List<Person> people = Person.finder.all();
    return ok(helloworld.render("Hello World!", people));
  }
}

ビュー

views/helloworld.scala.htmla
@(title: String, people : List[Person])

<!DOCTYPE html>
<html lang="ja">
    <body>
    <h1>@title</h1>
    <table>
    <tr>
      <th>ID</th>
      <th>Name</th>
      <th>Sex</th>
    </tr>
    <tr>
    @for(person <- people){
      <td>@person.id</td>
      <td>@person.name</td>
      <td>@person.sex</td>
    }
    </tr>
    </body>
</html>

ビュー

* conf/routes
・・・
GET     /assets/*file               controllers.Assets.versioned(path="/public", file: Asset)

# ↓↓↓↓↓Add(別にここは前の記事とは変わっていないけど)↓↓↓↓
GET     /hello                      controllers.HelloWorldController.index()


関連記事

Play Framework [1-0] ~ 入門編 / 事前知識 ~

http://blogs.yahoo.co.jp/dk521123/36082733.html

Play Framework [1-1] ~ 入門編 / 環境構築 ~

http://blogs.yahoo.co.jp/dk521123/36058991.html

Play Framework [1-2] ~入門編 / Hello World

http://blogs.yahoo.co.jp/dk521123/36077858.html

Play Framework [1-3] ~ 入門編 / モデルの設定 ~

http://blogs.yahoo.co.jp/dk521123/36077949.html

Play Framework [3-1] ~ 応用編 / DBを動的に切替える ~

http://blogs.yahoo.co.jp/dk521123/36088178.html

O/Rマッパー [1] ~ Ebean ~

http://blogs.yahoo.co.jp/dk521123/36044963.html