このエントリはPlay frameworkひとりアドベントカレンダーの10日目です。
9日目でDBを使う準備ができたので、今日はデータを操作してみましょう。
modelを作る
昨日作ったクラスに属性を追加して使いましょう。
package models;
import javax.persistence.Entity;
import javax.persistence.Id;
import play.db.ebean.Model;
@Entity
public class Twowa extends Model {
@Id
public Long id;
public String userId;
public String contents;
}
modelにfinderを定義
EBeanを利用した操作をするために、各modelでfinderを定義する必要があります。
finderのテンプレは下記の通り。
Long
は@id
な属性の型Twowa
は自身のクラス
です。
public static Finder find = new Finder(Long.class, Twowa.class);
ただまぁこれをチマチマ書くのは不毛な刺身たんぽぽなので、EclipseのCode Templateにしておきましょう。
Editor > Template で、下記をテンプレートと設定しておきましょう。
public static Finder <${id_class:var}, ${enclosing_type}> find = new Finder<${id_class}, ${enclosing_type}>(${id_class}.class,${enclosing_type}.class);
https://gist.github.com/3958509
使ってみよう
データ作成
Controllerで、インスタンス作って #save
すればOK!
あらま!簡単!
public static Result add() {
Twowa twowa = new Twowa();
twowa.userId = "myユーザ";
twowa.contents = "ちょわー";
twowa.createdAt = Calendar.getInstance().getTime();
twowa.save();
return redirect(routes.Application.index());
}
データ読み込み
全部とる場合は…
.find.all()
すればOK!
あらま!簡単!
List twowas = Twowa.find.all();
PrimaryKey( @Id
)でとる場合は…
.find.byId()
すればOK!
あらま!簡単!
Twowa twowa = Twowa.find.byId((long) 12345);
複雑な条件をつける場合は…
.find.where().and|eq|between|contains|ge|gt|le|lt|in.findList()
すればOK!
あらま!ちょっとムツカシイネー
List twowas = Twowa.find.where().eq("user_id", "myユーザ").findList();
データ更新
find
して save
すればよろしい。
Twowa twowa = Twowa.find.byId((long) 12345);
twowa.contents = "///" + twowa.contents + "///";
twowa.save();
データ削除
find
して delete
すればよろしい。
Twowa.find.byId((long) 12345).delete();