ダイナミックファインダーによる検索 (2/5)
作成:2013-11-09 11:24
更新:2013-11-09 11:24
更新:2013-11-09 11:24
■ダイナミックファインダーについて
ダイナミックファインダーの基本は、「指定したフィールドからの検索」です。
例えば、SampleDataで、名前(name)からレコードを検索することを考えてみましょう。"tuyano"という名前のレコードを検索するには、以下のように実行するだけです。
「findByName」というメソッドにより、nameから検索文字列の値をもつレコードをすべて探し出します。「いつの間に、SampleDataにそんなメソッドが?」と思った人。それが、ダイナミックファインダーの威力なのです。
ダイナミックファインダーは、ドメインクラスに用意されているプロパティから自動的に検索用メソッドを生成する機能です。例えば、SampleDataクラスには、name, mail, ageといったフィールドがありますから、
例えば、SampleDataで、名前(name)からレコードを検索することを考えてみましょう。"tuyano"という名前のレコードを検索するには、以下のように実行するだけです。
def 変数 = SampleData
.findByName( 検索文字列 );
「findByName」というメソッドにより、nameから検索文字列の値をもつレコードをすべて探し出します。「いつの間に、SampleDataにそんなメソッドが?」と思った人。それが、ダイナミックファインダーの威力なのです。
ダイナミックファインダーは、ドメインクラスに用意されているプロパティから自動的に検索用メソッドを生成する機能です。例えば、SampleDataクラスには、name, mail, ageといったフィールドがありますから、
findByName
findByMail
findByAge
このような、各プロパティを対象として検索を行うメソッドが自動的に生成されます。実に単純ですね!(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※findメソッド def find = { def fstr = params.fstr; def datas = null; def msg = null; if (fstr == null){ datas = SampleData.getAll(); msg = "全レコード一覧です。"; } else { datas = SampleData.findByName(fstr); msg = "name = '" + fstr + "' のレコード一覧です。"; } def arr = [ 'title':"Show All", 'msg':msg, 'datas':datas ]; arr; }
※関連コンテンツ