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

MongoDBを利用する (4/6)

作成:2015-05-09 09:18
更新:2015-05-09 09:18

■コントローラーを修正する

では、MongoRepositoryを利用してエンティティを取得する処理をコントローラーに作成しましょう。今回も、SampleControllerを書き換えて利用することにします。

下にサンプルを用意しておきました。ここでは、2つのメソッドを用意してあります。これらは、/heloにアクセスした際の処理です。GETアクセスではheloメソッドが、POSTアクセスではpostメソッドがそれぞれ呼び出されます。では、簡単に説明をしておきましょう。

●リポジトリの自動ワイヤー
リポジトリは、mongoRepositoryというフィールドとして用意されます。ここでは、@Autowiredアノテーションを付けて自動的にインスタンスが割り当てられるようにしてあります。

●全エンティティの検索
heloメソッドでは、すべてのエンティティを取得しaddAttributeでテンプレート側に渡せるようにしています。全エンティティの検索は以下のように行います。
List<MongoData> datas = mongoRepository.findAll();
findAll」で、すべてのエンティティが取り出されます。これまた、JpaRepositoryとまったく同じですね。取り出されるのは、List<MongoData>インスタンスです。デフォルトでMongoDataの総称型が指定された形になっていることがわかります。

●titleによる検索
postメソッドは、フォームからPOST送信された場合の処理を想定してあります。ここではメソッドの定義に以下のようなアノテーションがつけられています。
@RequestMapping(value = "/helo", method = RequestMethod.POST)
public Model post(Model model, @RequestParam("key") String key)
/heloにPOSTされた場合に呼び出されることがわかりますね。その際、@RequestParam("key")というようにパラメータが指定されています。フォームにname="key"といった入力項目を用意しておけば、それが引数keyに渡されるようにしているわけです。

実際の検索処理は、先にMyMongoRepositoryに用意しておいた「findByTitle」メソッドを呼び出しているだけです。
List<MongoData> datas = mongoRepository.findByTitle(key);
この部分ですね。JpaRepositoryの場合と同じく、インターフェイスを用意するだけで、メソッドの実装を用意せずとも検索が行えることがこれでわかるでしょう。

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

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

●プログラム・リスト●

package com.tuyano.libro.bootapp;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
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
    private MyMongoRepository mongoRepository;
    
    @RequestMapping("/helo")
    public Model helo(Model model) {
        List<MongoData> datas = mongoRepository.findAll();
        model.addAttribute("msg","this is MongoDB sample.");
        model.addAttribute("datas",datas);
        return model;
    }
    
    @RequestMapping(value = "/helo", method = RequestMethod.POST)
    public Model post(Model model, @RequestParam("key") String key) {
        List<MongoData> datas = mongoRepository.findByTitle(key);
        if (datas == null)
            { datas = new ArrayList<MongoData>(); }
        model.addAttribute("msg","this is MongoDB sample.");
        model.addAttribute("datas",datas);
        return model;
    }
}
※関連コンテンツ

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