LoginSignup
13
0

More than 3 years have passed since last update.

SpringBootやってみる~DBアクセス(mybatis)編~ データ登録①

Last updated at Posted at 2020-12-02

目的

自己学習向け・初心者向けメモ。
前回の SpringBootやってみる~DBアクセス(mybatis)編~ データ取得② のアプリケーションをベースとする

概要

完成図

【登録画面】
image.png
【登録確認画面】
image.png
【登録完了画面】
image.png

アプリケーションの実装

作成したプログラムの構成は以下の通り
image.png

赤枠で囲っているものは、前回のソースコードから追加・変更したもので本記事にて記載する(HTMLファイルはgit参照)

【DemoController.java】
TOP画面からユーザ検索・ユーザ登録系の画面への遷移の追加
Formの修正の反映

DemoController.java
    /**
     * Formオブジェクトを初期化して返却する
     * @return 検索用Formオブジェクト
     */
    @ModelAttribute("userForm")
    public UserForm clearUserForm(){
        return new UserForm();
    }

    /**
     * 初期表示画面に遷移する
     * @return 検索画面へのパス
     */
    @RequestMapping("/")
    public String index(Model model){
        UserForm userForm = new UserForm();
        userForm.setId(null);
        userForm.setName(null);
        userForm.setSex(null);
        model.addAttribute("userForm",userForm);
        return "top";
    }

    /**
     * 検索画面に遷移する
     * @return 検索画面へのパス
     */
    @RequestMapping("/search")
    public String search(){
        return "search";
    }

    /**
     * 登録画面に遷移する
     * @return 登録画面へのパス
     */
    @RequestMapping("/register")
    public String register(){
        return "register";
    }

    /**
     * 登録確認画面に遷移する
     * @return 登録画面へのパス
     */
    @RequestMapping("/confirm")
    public String confirm(){
        return "confirm";
    }

    /**
     * 検索処理を行い、一覧画面に遷移する
     * @param searchForm 検索用Formオブジェクト
     * @param model Modelオブジェクト
     * @param result バインド結果
     * @return 一覧画面へのパス
     */
    @RequestMapping("/search_result")
    public String searchResult(UserForm userForm, Model model, BindingResult result){
        //検索用Formオブジェクトのチェック処理
        //ユーザー情報リストを取得
        List<UserForm> demoFormList = demoService.demoFormList(userForm);
        //ユーザー情報リストを更新
        model.addAttribute("demoFormList", demoFormList);
        return "search_result";
    }

    /**
     * 確認画面に遷移する
     * @param demoForm Formオブジェクト
     * @param result バインド結果
     * @return 確認画面または入力画面へのパス
     */
    @PostMapping(value = "/confirm", params = "next")
    public String confirm(UserForm userForm, BindingResult result){
        //チェック処理を行い、画面遷移する
        return "confirm";
    }

    /**
     * 完了画面に遷移する
     * @param demoForm Formオブジェクト
     * @param result バインド結果
     * @return 完了画面
     */
    @PostMapping(value = "/complete", params = "next")
    public String send(UserForm userForm, BindingResult result){
        //追加処理を行う
        demoService.create(userForm);
        return "complete";
    }

【UserForm.java】
Formの共通化

【UserInfoMapper.java】
ユーザデータ登録・最大ID取得の追加

UserInfoMapper.java

    /**
     * ユーザーデータを追加する
     * @param userData ユーザーデータテーブル(user_data)の追加データ
     */
     List<UserInfo> createRegisterForm(UserInfo userInfo);

    /**
     * 最大値IDを取得する
     * @return 最大値ID
     */
    String findMaxId();

【DemoService.java】
ユーザデータの追加

DemoService.java
    /**
     * 引数のユーザーデータ追加
     * @param demoForm フォームオブジェクト
     */
    void create(UserForm userForm);

【DemoServiceImpl.java】
ユーザデータの追加

DemoServiceImpl.java
    @Override
    public void create(UserForm userForm){
        //追加処理を行うエンティティを生成
        UserInfo userInfo = getUserData(userForm);
        //追加処理
        userInfo.setId(String.valueOf(Integer.parseInt(mapper.findMaxId()) + 1));
        mapper.createRegisterForm(userInfo);
    }

    /**
     * UserInfoオブジェクトに引数のフォームの各値を設定する
     * @param userForm UserInfoオブジェクト
     * @return ユーザーデータ
     */
    private UserInfo getUserData(UserForm userForm){
        UserInfo userInfo = new UserInfo();
        userInfo.setName(userForm.getName());
        userInfo.setSex(userForm.getSex());
        return userInfo;
    }

ソースコードの詳細はいかに記載
GitHub

アプリケーションの実行

追加するユーザ情報を入力
image.png
image.png
image.png

登録したユーザを確認
image.png
image.png

次回

SpringBootやってみる~DBアクセス(mybatis)編~ データ登録②

13
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0