Model(モデル)を使ってデータベースアクセスする[Scala編] (3/7)
作成:2013-02-10 10:06
更新:2013-02-10 10:06
更新:2013-02-10 10:06
■テーブル定義のSQL文の用意
次に行うのは、使用するテーブルを定義するためのファイルの用意です。データベースを利用する場合には、あらかじめデータベースに使用するテーブルを用意しておかないといけませんが、Playの場合、実行時にテーブルがないと、あらかじめ用意しておいたファイルを元にテーブル作成を行ってくれるようになります。特にH2でメモリにデータベースを保管する場合、毎回データベースにテーブルを用意しないといけませんから、手作業では面倒臭いでしょう。
このテーブル定義のファイルは、「conf」内に「evolutions」というフォルダを作り、その中に「default」フォルダを作成して、更にこのフォルダの中にファイルを用意します。ファイル名は「1.sql」としておきます。
下のリスト欄に、conf/evolutions/default/1.sqlの内容を記述しておきました。この通りにファイルに記述をしておいてください。ここでは、以下のような項目を持つテーブル「mydatas」を定義しています。
id――自動で割り振られるID番号。プライマリキー(整数)
name――名前のデータ(テキスト)
mail――メールアドレスのデータ(テキスト)
tel――電話番号のデータ(テキスト)
このテーブルを使って、データベースアクセスの処理を作成していくことにします。このファイルに記述されている内容は、まぁなんとなくわかるでしょうが、こんな感じで書かれています。
このファイルが用意されていると、Playを起動し、データベースアクセスを必要とする処理が実行された際に表示されるエラー画面(テーブルがないので当然エラーになります)で、「An SQL script will be run on your database」という表示が現れ、その右側に「Apply this script now!」というボタンが表示されます。このボタンをクリックすると、用意されたスクリプトが実行され、テーブルが作成されます。
このテーブル定義のファイルは、「conf」内に「evolutions」というフォルダを作り、その中に「default」フォルダを作成して、更にこのフォルダの中にファイルを用意します。ファイル名は「1.sql」としておきます。
下のリスト欄に、conf/evolutions/default/1.sqlの内容を記述しておきました。この通りにファイルに記述をしておいてください。ここでは、以下のような項目を持つテーブル「mydatas」を定義しています。
id――自動で割り振られるID番号。プライマリキー(整数)
name――名前のデータ(テキスト)
mail――メールアドレスのデータ(テキスト)
tel――電話番号のデータ(テキスト)
このテーブルを使って、データベースアクセスの処理を作成していくことにします。このファイルに記述されている内容は、まぁなんとなくわかるでしょうが、こんな感じで書かれています。
# --- !Ups ★ここにテーブル作成の処理を書く# --- !Upsと# --- !Downsのコメント文の下に、テーブル作成と削除の処理を用意します。テーブルの作成はcreate table、削除はdrop tebleという文になります。見ればわかるように、いずれもテーブル作成・削除のためのSQL文がそのまま書かれているんですね。
create table テーブル名 (
……各項目の定義を記述……
);
# --- !Downs ★ここにテーブル削除の処理を書く
drop table テーブル名;
このファイルが用意されていると、Playを起動し、データベースアクセスを必要とする処理が実行された際に表示されるエラー画面(テーブルがないので当然エラーになります)で、「An SQL script will be run on your database」という表示が現れ、その右側に「Apply this script now!」というボタンが表示されます。このボタンをクリックすると、用意されたスクリプトが実行され、テーブルが作成されます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※application.confへの記述 db.default.driver=org.h2.Driver db.default.url="jdbc:h2:mem:play" ※conf/evolutions/default/1.sqlへの記述 # --- First database schema # --- !Ups create table mydatas ( id bigint(20) NOT NULL AUTO_INCREMENT, name varchar(128), mail varchar(255), tel varchar(50), PRIMARY KEY (id) ); # --- !Downs drop table mydatas;
※関連コンテンツ