libro
www.tuyano.com
初心者のためのPlay Framework入門

EBeanによるModelの作成[Java編] (5/5)

作成:2013-03-03 11:20
更新:2013-03-03 11:22

■その他の主なデータベース操作について

これで、Modelクラスからのデータベース利用がどんな形のものか、なんとなくわかってきました。

後は、さまざまな処理の方法について個別に手順を頭に入れていくだけです。

とりあえず、「これだけ覚えておけば基本はOK」といういう基本操作について、SampleDataクラスを例にざっと整理して行きましょう。


・IDによる検索
SampleData 変数 = SampleData.find.byId( 番号 );
指定のIDのSampleDataを取得するには、Finderの「byId」を使います。これは引数にIDの値を指定して呼び出すことで、そのIDのレコードをSampleDataとして返すものです。


・レコードの更新
Form<SampleData> dataform = form(SampleData.class).bindFromRequest();
dataform.get().update();
flash();
レコードの更新はちょっと手順を考える必要があります。更新の処理そのものは、Modelインスタンスの「update」を呼び出して行えます。formFormインスタンスを取得し、bindFromRequestでリクエスト情報をバインドして必要な情報を書き込んだSampleDataを保管するFormを用意してから、getして得たSampleDataupdateして保存する、という流れになるでしょう。


・レコードの削除
SampleData.find.ref(id).delete();
flash();
削除は、Modelインスタンスの「delete」で行います。FinderからModelを取得し、deleteを呼び出せばいいのです。ただし、byIdではなく、「ref」というメソッドで指定IDのインスタンスを取得するのが一般的です。


・whereによる検索
ExpressionList<SampleData> datalist = SampleData.find.where().[検索メソッド];
List<SampleData> datas = datalist .findList();
SQLのwhere句を利用して条件を設定した検索は、Finderの「where」メソッドを利用します。ただし、これだけではダメです。この後にメソッドチェーンを使い、検索の式に相当するメソッドを記述します。これは以下のようなものがあります。

eq( フィールド , 値 );――「フィールド = 値」のレコードを検索する
ne( フィールド , 値 );――「フィールド != 値」のレコードを検索する
lt( フィールド , 値 );――「フィールド < 値」のレコードを検索する
gt( フィールド , 値 );――「フィールド > 値」のレコードを検索する
le( フィールド , 値 );――「フィールド <= 値」のレコードを検索する
ge( フィールド , 値 );――「フィールド>= 値」のレコードを検索する
ilike( フィールド , 値 );――――フィールド like 値」のレコードを検索する

これらは、ExpressionListというクラスのインスタンスとして値を返します。そこから「findList」を呼び出すことで、ModelインスタンスのListを取得できます。

例えば、「nameの値が"tuyano"のレコードを検索したい」というときは、以下のように行います。
ExpressionList<SampleData> datalist = 
    SampleData.find.where().eq("name","tuyano");

これで取得したdatalistからfindListListを取り出し、そこから順にSampleDataを取り出して処理していけばよいのです。

――これで、基本となるCRUD(Create, Read, Update, Delete)と、Whereによる単純な検索は行えるようになりました。ModelとFinderさえ用意すれば、思った以上に簡単にデータベースアクセスが可能となることがわかるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのPlay Framework入門」に戻る