LoginSignup
1
0

More than 5 years have passed since last update.

Play Framework勉強めも データベースについて②Read

Last updated at Posted at 2018-03-24

(参考)勉強してる書籍
https://www.amazon.co.jp/Play-Framework-2%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Java%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E9%96%8B%E7%99%BA-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798133922/ref=cm_cr_srp_d_product_top?ie=UTF8

検索方法について

プレイフレームワークでは、検索の機能をModel.Finderというクラスにまとめている。
基本的な使用方法は、Model内にインスタンスを生成して、必要に応じて取り出す。

Finderクラスについて

Finderインスタンスの設定方法

new Finder<プライマリキー,エンティティ>プライマリキー.class,エンティティ.class;

これで作成したインスタンスを、staticフィールドに保管し、必要に応じてそのメソッドでエンティティを取り出す。

toStringクラスの設定方法

    public String toString() {
        return ("[id:"+id+",name:"+name+",mail:"+mail+",message:"+message+",date:"+postdate+"]");
    }

オブジェクトクラスのtoStringメソッドを分かり易い用に、オーバーライド
(オブジェクトクラスについて参考)https://docs.oracle.com/javase/jp/7/api/java/lang/Object.html

Modelクラス全体

package models;

import java.util.Date;

import javax.persistence.*;
import javax.validation.*;

import play.data.validation.*;
import play.db.ebean.*;

@Entity
public class Message extends Model {

    @Id
    public Long id;
    public String name;
    public String mail;
    public String message;
    public Date postdate;

    public static Finder<Long,Message>find = new Finder<Long,Message>(Long.class,Massage.class);

    @Override
    public String toString() {
        return ("[id:"+id+",name:"+name+",mail:"+mail+",message:"+message+",date:"+postdate+"]");
    }

}

Controllerクラスについて

コントローラクラスから、エンティティを取り出せるように設定を記述する。

記載方法

List<エンティティ>変数Finderインスタンス.all();

Javaのリスト(List)とは、重複した要素を含むことができる順序の付けられたコレクション
(参考Listとは)https://eng-entrance.com/java-array-list#List

Applicationクラスに追加する項目

List<Message>datas=Message.find.all();

findインスタンスのallメソッドを呼び出している。
allメソッドは、保管されていいる全てのメソッドをListに返す。

Applicationクラス全体

package controllers;

import play.*;
import play.mvc.*;

import views.html.*;

public class Application extends Controller {
    //ルートにアクセスした際のAction
    public static Result index(){
      List<Message>datas=Message.find.all();
      return ok(index.render("データベースのサンプル"));
    }
}

index.scala.htmlについて

受け取ったリストをそのまま出力出来るように変更する。

index.scala.html全体

@(msg:String,datas:List[Message])

@main("Sample page") {
  <h1>Hello!</h1>
  <p>@msg</p>
  <pre>@datas</pre>
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0