データベースアクセスの基本(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>
※関連コンテンツ