1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?