#検索方法について
プレイフレームワークでは、検索の機能を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>
}