Play Framework でつぶやきアプリを開発(その2: テーブルにデータを投入しよう)
現状のアプリケーション(http://localhost:9000/inputchat)は、フォームに入力した内容を
単にecho(オウム返し)するだけの機能である。
このオウム返しの内容を先ほど作成したgrpchat テーブルに登録するように改修していこう。
オウム返しアプリがつぶやきアプリに昇華する第一歩だ。
まずは、入力画面(/inputchat)でからフォームを入力してEnter を押下した際に呼び出されるコントローラのメソッドApplication.postchat()を下記の通り改修する。
■Application.java
package controllers; import play.*; import play.mvc.*; import play.mvc.Http.Context; import models.*; import views.html.*; import play.mvc.Http.MultipartFormData; import play.data.*; import static play.data.Form.*; import java.util.*; import forms.*; public class Application extends Controller { public static Result index() { return ok(index.render("Your new application is ready.")); } public static Result inputchat() { //フォームを定義 Form<PostChatForm> postChatForm = new Form(PostChatForm.class); return ok(inputchat.render("InputChatForm",postChatForm)); } public static Result postchat(){ //フォームの内容を取得して、PostChatFormクラスのインスタンスに格納する。 Form<PostChatForm> postChatForm = new Form(PostChatForm.class).bindFromRequest(); //フォームの内容をpostMessageに代入する。 String postMessage = postChatForm.get().getPostMessage(); //Grpchat オブジェクトをインスタンス化 Grpchat grpchatRecd = new Grpchat(); //Grpchat オブジェクトのmessageフィールドにフォームで取得した内容をセットする grpchatRecd.setMessage(postMessage); //テーブルにデータを登録 grpchatRecd.save(); return ok(postchat.render(postMessage)); } }
postchat()メソッドに下記3ステップを追加しただけである。
//Grpchat オブジェクトをインスタンス化 Grpchat grpchatRecd = new Grpchat(); //Grpchat オブジェクトのmessageフィールドにフォームで取得した内容をセットする grpchatRecd.setMessage(postMessage); //テーブルにデータを登録 grpchatRecd.save();
できたら、http://localhost:9000/inputchatにアクセスして、フォームを投稿してみよう。
投稿できたら、MySQLのWorkbenchを起動し、grpchat テーブルをselect してみよう。
すると、投稿した内容がレコードとして登録されているはずだ。
一点疑問に思ってほしいのだが、grpchatのidフィールドに数値がセットされていると思う。
値はmessage以外セットしていないのに、なぜだろう?
実はこれもEbean の機能の一つとなる。
Grpchat.javaを見てみると、idフィールドに@Idというアノテーションが付与されているのが分かる。
つまり、このアノテーションがあると、レコードが挿入される度に自動的に値を採番してくれるようになる、MySQLのAUTO_INCREMENTオプションが付与された形でCREATE文を発行してくれるのである。