きっと何者にもなれないSEの記録帳

日々で得たIT技術を記録していきます。

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)についての記事を書きたいと思います。
ここまでのサンプルソースを下記に挙げています。
 
参考