Spring MVC + MirageSQL CRUD画面作成
前回のSpring MVC + MirageSQL環境構築に続き、CRUDを行える画面を作成しました。
CRUDとは、「作成(Create)」「読み出し(Read)」「更新(Update)」「削除(Delete)」が行えることです。
Serviceクラス
前回までで読み出し(Read)は行えていたので、CUDを追加します。
基本のコードは下記のとおりです。
エンティティクラス(Users)を用意し、画面からの値をエンティティクラスにセットします。
sqlManagerクラスのCUDに対応するメソッドを呼び出します。
読み出しの時のように、SQLファイルを用意する必要はありません。
@Transactional public void createUser(UserModel userModel){ Users user = new Users(); user.username = userModel.getUsername(); user.mailaddress = userModel.getMailaddress(); sqlManager.insertEntity(user); } |
データベースへの操作 | 呼び出しメソッド |
Create | insertEntity |
Update | updateEntity |
delete | deleteEntity |
エンティティクラスは下記のように作成します。
@PrimaryKeyアノテーションで主キーになるプロパティを指定します。
public class Users{ @PrimaryKey(generationType=GenerationType.APPLICATION) public String username; public String mailaddress; } |
Controllerクラス
更新を行うメソッドを例に説明します。
①モデルクラスの初期化
②のupdateメソッドよりも前にこのメソッドの処理は実行されます。
画面からのリクエストパラメータを扱うにはJavaBeansのようなクラスを定義する方法が簡単です。それがここでいうところのモデルクラスです。
updateメソッドでモデルクラスにあたるUserModelクラスを扱うには@ModelAttributeを指定したメソッドの定義が必要です。①の記述のようにモデルクラスを初期化しています。
②サービスクラスの呼び出し
①の実装によって、モデルクラス(UserModelクラス)が扱えるようになっています。userModelの値をそのままサービスクラスに渡すだけです。
③モデルクラス定義
画面の値に対応したクラスです。
@NotEmptyはバリデーションを行うための記述です。詳しい内容については別の機会に記したいと思います。
// ①モデルクラスの初期化 @ModelAttribute("userModel") public UserModel initUserModel() { return new UserModel(); } // ②サービスクラスの呼び出し @RequestMapping(value="/user/update", method=RequestMethod.POST) public String update(@ModelAttribute("userModel") UserModel userModel, Model model) { userService.updateUser(userModel); model.addAttribute("userModel",userModel); model.addAttribute("status", EDIT); return "user"; } // ③モデルクラス定義 public class UserModel { @NotEmpty private String username; private String mailaddress; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getMailaddress() { return mailaddress; } public void setMailaddress(String mailaddress) { this.mailaddress = mailaddress; } } |
View(JSP)
View側でもモデルクラスを使用する指定を行う必要があります。
Spring MVCで用意されているformタグを使用します。modelAttribute属性に使用するモデルのキーを指定します。
<form:form modelAttribute="userModel" action="update" method="POST"> ・・・入力項目の記述・・・ </form:form> |
入力項目を表示するために、formタグ内で使用するタグはSpring MVCで用意されているタグを使用する必要があります。
詳細は以下の記事が参考になります。
次回は入力チェック(Validator)についての記事を書きたいと思います。
ここまでのサンプルソースを下記に挙げています。
参考