データベースアクセスの基本(CRUD) (1/4)
作成:2013-11-02 12:14
更新:2013-11-02 12:14
更新:2013-11-02 12:14
■データの新規作成
前回、SampleDataというドメインクラスを作成しました。今回はこれを使い、データベースの基本的な使い方を説明していきましょう。
データベースアクセスの基本は「CRUD(Create Read Update Delete)」と呼ばれます。まずは「Create(新規作成)」から説明をしましょう。
実は、データの新規作成は前回ちらっとやっています。「ブートストラップ」で、ダミーデータを用意するところです。ドメインデータの新規作成は、「インスタンスの作成」「saveの実行」という手順で行います。今回のSampleDataならば、こんな感じです。
・インスタンス作成
・インスタンスの保存
後は、作成したインスタンスの「save」メソッドを呼び出せば、それが保存されます。「SampleDataにsaveなんてないぞ?」と思った人。先に述べたように、Grailsではビルド時に必要なメソッドを外部から注入されるので、ドメイン管理に必要なメソッドが自動的に用意されるのです。
では、以下に簡単なサンプルを挙げておきましょう。ここではcreateというアクションとして作成しておきました。フォームをもったcreate.gspと、その表示と送信されたデータを保存するコントローラーのリクエストハンドラを作成しておきます。
ここでは、new SampleDataをsaveした後で、indexにリダイレクトをしています。これは「redirect」というメソッドを使います。
データベースアクセスの基本は「CRUD(Create Read Update Delete)」と呼ばれます。まずは「Create(新規作成)」から説明をしましょう。
実は、データの新規作成は前回ちらっとやっています。「ブートストラップ」で、ダミーデータを用意するところです。ドメインデータの新規作成は、「インスタンスの作成」「saveの実行」という手順で行います。今回のSampleDataならば、こんな感じです。
・インスタンス作成
new SampleData(name:名前, mail:メール, age:年齢 );
・インスタンスの保存
《SampleData》.save();ドメインクラスのインスタンスは、newするだけで作れます。このとき、保存する値を引数に指定します。Groovyでは、引数にラベルを指定することができるため、name:○○というようにそれぞれのフィールドを指定して値を用意できます。
後は、作成したインスタンスの「save」メソッドを呼び出せば、それが保存されます。「SampleDataにsaveなんてないぞ?」と思った人。先に述べたように、Grailsではビルド時に必要なメソッドを外部から注入されるので、ドメイン管理に必要なメソッドが自動的に用意されるのです。
では、以下に簡単なサンプルを挙げておきましょう。ここではcreateというアクションとして作成しておきました。フォームをもったcreate.gspと、その表示と送信されたデータを保存するコントローラーのリクエストハンドラを作成しておきます。
■リダイレクトについて
ここでは、new SampleDataをsaveした後で、indexにリダイレクトをしています。これは「redirect」というメソッドを使います。
redirect(action:アクション名);このようにして、指定のアクションにリダイレクトできます。もし、他のコントローラーのアクションにリダイレクトしたければ、「controller:○○」というような引数を追加してコントローラーとアクションの両方を指定すればOKです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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>
※関連コンテンツ