libro
www.tuyano.com
初心者のためのSpring Bootプログラミング入門

JpaRepositoryでデータベースアクセスしよう! (2/6)

作成:2014-07-05 10:43
更新:2014-07-05 10:54

■データを保存する

では、フォームから送信されたデータをエンティティにして保存する処理を作りましょう。

今回は、SampleControllerクラスを書き換えればいいでしょう。下に、SampleController.javaのソースコードを添付しておきます。これを見ながらコントローラーを完成させて下さい。


●エンティティの取得
まずは、前回作成した全エンティティの取得からです。これは以下のようにして行っていましたね。
Iterable<MyData> list = repository.findAll();
JpaRepositoryの「findAll」を呼び出せば、それだけでMyDataIterableで取り出すことができましたね。後はここから順にエンティティを取り出すなりして処理すればいいでしょう。


●エンティティの保存
エンティティの保存は、@RequestMappingvalue="/post"を割りつけたメソッドheloが行っています。ここでは、まず@RequestParamが付けられた変数の値をまとめてMyDataインスタンスを作成します。
MyData mydata = new MyData(name,mail,tel,age);
既にMyDataクラスには、引数をもったコンストラクタを用意してありましたから、こんな具合に簡単にインスタンス化できます。そしてこのMyDataインスタンスを、リポジトリに保存すればデータベースに値が保管されます。
repository.saveAndFlush(mydata);
この「saveAndFlush」は、文字通り「セーブとフラッシュ」をまとめて行うものです。JpaRepositoryには、エンティティの保存として「save」、操作を反映させるためのメソッドとして「flush」というメソッドが用意されています。saveAndFlushは、引数のエンティティを保存し、それをデータベースに反映させます。

では、mvn spring-boot:runでプロジェクトを実行し、http://localhost:8080/heloにアクセスしてデーターを幾つか送信してみましょう。フォームを送ると、保存されたエンティティの内容がページに出力されますよ。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro.bootapp;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class SampleController {
    
    @Autowired
    MyDataRepository repository;
    
    @RequestMapping("/helo")
    public String helo(Model model) {
        Iterable<MyData> list = repository.findAll();
        model.addAttribute("datas",list);
    return "helo";
    }

    @RequestMapping(value="/post", method=RequestMethod.POST)
    public String helo(Model model,
            @RequestParam("name") String name,
            @RequestParam("mail") String mail,
            @RequestParam("tel") String tel,
            @RequestParam("age") int age) {
        MyData mydata = new MyData(name,mail,tel,age);
        repository.saveAndFlush(mydata);
        Iterable<MyData> list = repository.findAll();
        model.addAttribute("datas",list);
        return "helo";
    }
}

※関連コンテンツ

「初心者のためのSpring Bootプログラミング入門」に戻る