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

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

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

■データの新規作成

前回、SampleDataというドメインクラスを作成しました。今回はこれを使い、データベースの基本的な使い方を説明していきましょう。

データベースアクセスの基本は「CRUD(Create Read Update Delete)」と呼ばれます。まずは「Create(新規作成)」から説明をしましょう。

実は、データの新規作成は前回ちらっとやっています。「ブートストラップ」で、ダミーデータを用意するところです。ドメインデータの新規作成は、「インスタンスの作成」「saveの実行」という手順で行います。今回のSampleDataならば、こんな感じです。

・インスタンス作成
new SampleData(name:名前, mail:メール, age:年齢 );

・インスタンスの保存
《SampleData》.save();
ドメインクラスのインスタンスは、newするだけで作れます。このとき、保存する値を引数に指定します。Groovyでは、引数にラベルを指定することができるため、name:○○というようにそれぞれのフィールドを指定して値を用意できます。

後は、作成したインスタンスの「save」メソッドを呼び出せば、それが保存されます。「SampleDatasaveなんてないぞ?」と思った人。先に述べたように、Grailsではビルド時に必要なメソッドを外部から注入されるので、ドメイン管理に必要なメソッドが自動的に用意されるのです。

では、以下に簡単なサンプルを挙げておきましょう。ここではcreateというアクションとして作成しておきました。フォームをもったcreate.gspと、その表示と送信されたデータを保存するコントローラーのリクエストハンドラを作成しておきます。


■リダイレクトについて

ここでは、new SampleDatasaveした後で、indexにリダイレクトをしています。これは「redirect」というメソッドを使います。
redirect(action:アクション名);
このようにして、指定のアクションにリダイレクトできます。もし、他のコントローラーのアクションにリダイレクトしたければ、「controller:○○」というような引数を追加してコントローラーとアクションの両方を指定すればOKです。

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

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

●プログラム・リスト●

package gralisapp

class SampleDataController {

    def create = {
        def arr = [
            'title':"Create Data",
            'msg':"入力してください。",
        ];
        if (request.method=='POST'){
            new SampleData(name:params.name, mail:params.mail, 
                age:params.age).save();
            redirect(action:"index");
        }
        arr;
    }
    
}


※create.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>
    <form method="post" action="create">
    <table>
    <tr><td>名前:</td><td><input type="text" name="name"></td></tr>
    <tr><td>メール:</td><td><input type="text" name="mail"></td></tr>
    <tr><td>年齢:</td><td><input type="text" name="age"></td></tr>
    <tr><td></td><td><input type="submit"></td></tr>
    </table>
    </form>
</body>
</html>

※関連コンテンツ

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