libro
www.tuyano.com
初心者のためのGroovy/Grails入門

データベースアクセスの基本(CRUD) (2/4)

作成:2013-11-02 12:17
更新:2013-11-02 12:17

■データの一覧取得

続いて、データの一覧取得です。これも、前回ちらっと説明しました。ドメインクラスの「all」というメソッドを呼び出せばいいのでしたね。
変数 = Sample.all();
こんな感じです。「全インスタンスを取得する」というメソッドは他にも「getAll」「list」といったメソッドが用意されています。いずれもリストとして全インスタンスを取得できます。

これらの使い方のポイントは、単にインスタンスを取り出すことよりも、取り出したリストをどう処理するか?でしょう。これにはびゅう―側で<g:each>を使って繰り返し処理を行わせるのが一般的でしょう。
<g:each in="リスト" status="変数" var="変数">
    ……ここに各インスタンス処理を書く……
</g:each>
<g:each>では、inに指定したリストや配列から順に要素を取り出し、varの変数に代入する、ということを繰り返していきます。statusはカウンタ変数で、何回目の繰り返しかをこれで知ることができます。こうして取得したインスタンスから必要な値を取り出し利用すればよいのです。

下に利用例を上げておきます。ここではindexアクションとして用意しておきました。SampleData.allで取得したリストをビュー側で<g:each>を使って一覧に書き出します。

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

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

●プログラム・リスト●

package gralisapp

class SampleDataController {

    def index = {
        def datas = SampleData.all;
        def arr = [
            'title':"Show All",
            'msg':"SampleDataの一覧です。",
            'datas':datas
        ];
        arr;
    }
}


※index.gsp

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="mylayout" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Grails Hello</title>
</head>
<body>
    <h1>${title}</h1>
    <h2>${msg}</h2>
    <table>
    <g:each in="${datas}" status="i" var="data">
        <tr>
        <td>${data.name}</td>
        <td>${data.mail}</td>
        <td>${data.age}</td>
        </tr>
    </g:each>
    </table>
</body>
</html>

※関連コンテンツ

「初心者のためのGroovy/Grails入門」に戻る