前に試したSpring Boot、JPAのプロジェクトを使用して、JSONでのリクエストを処理してみる。

Spring Tool SuiteでSpring Boot + JPAを試す

 
前回のプロジェクトツリー
ひそかにControllerクラスを分離している、、(気にしない気にしない。)
06-001

 

今回は、開催回を2つ(FromとTo)指定して、その間のデータを取得できるようにする。

 
まず、JSONマッピング用のBeanクラスを作成。
「com.egg1st.service.bean」パッケージを作成。配下に「Loto6ShowServiceCountBean.java」なるクラスを作成。
※シリアライズ可能とする

public class Loto6ShowServiceCountBean implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Integer countFrom;
	private Integer countTo;
	// setter, getterは省略。
}

 
 
リポジトリに今回用の検索処理を追加する。
ILoto6NumbersRepositoryインターフェースに独自メソッドを追加。
実装方法は@Queryアノテーションを使用してクエリを指定するようにした。

@Repository
public interface ILoto6NumbersRepository extends JpaRepository<Loto6, Integer> {
	@Query("select u from loto6 u where u.execcount between :countFrom and :countTo")
	public List<Loto6> findByExecCountFromTo(@Param("countFrom") Integer countFrom, @Param("countTo") Integer countTo);
}

 
 
サービスクラスへの追加。
1. Iloto6ShowServiceインターフェースへメソッド定義を追加。名前は「findByExecCountFromTo()」とした。

public interface Iloto6ShowService {
	public List<Loto6> findAll();
	public List<Loto6> findByExecCountFromTo(Integer countFrom, Integer countTo); // 追加
}

 
2. 実装クラスへ処理を追加する。

	@Override
	public List<Loto6> findByExecCountFromTo(Integer countFrom, Integer countTo) {
		return repository.findByExecCountFromTo(countFrom, countTo);
	}

 
 
コントローラークラスへの追加。
リクエストマッピングは”/count”とした。前回のアプリケーションクラスから分離したので全文を。

@RestController
public class Loto6Controller {
	@Autowired
	Iloto6ShowService loto6ShowService;
	
	@RequestMapping("/")
	List<Loto6> getAll(Model model){
        return loto6ShowService.findAll();
    }
	// JSONのリクエストを受け付けるようにContent-Typeを指定する
	@RequestMapping(value = "/count", consumes=MediaType.APPLICATION_JSON_VALUE)
	// JSONマッピング用に作成したBeanクラスを指定する
	List<Loto6> getData(@RequestBody Loto6ShowServiceCountBean bean){
        return loto6ShowService.findByExecCountFromTo(bean.getCountFrom(), bean.getCountTo());
    }
}

 
 
改修後のプロジェクトツリーはこんな感じに。

06-005

 
 
 
Postリクエストを送る必要があるので、chrome拡張機能であるAdvanced REST clientを組み込んで確認。
advanced-rest-client

 

リクエストを設定
06-003

 

開催回が10~12のデータが取得できた。
06-004

 
 
■参考リンク
http://niwaka.hateblo.jp/entry/2015/04/06/213516

http://qiita.com/tag1216/items/55742fdb442e5617f727