JpaRepositoryでデータベースアクセスしよう! (4/6)
作成:2014-07-05 10:48
更新:2015-04-23 09:37
更新:2015-04-23 09:37
■リポジトリにメソッドを追記する
続いて、もう少し具体的な検索処理を考えましょう。例として、「名前(name)で検索する」という処理を考えてみましょう。
普通なら、送信されたフォームから検索テキストを取り出し、そのテキストを含むエンティティを検索する処理を自分で考えて書かないといけません。が、リポジトリを利用していれば、そんな面倒なことはしません。ただ単に「メソッドの宣言をJpaRepositoryに追記する」というだけでいのです。
MyDataRepository.javaを開き、下のリスト欄を参考にして書き換えましょう。書き換えた部分は、☆マークのメソッドの宣言だけです。これを1行追記しました。
findByNameを呼び出しています。これで、送られてきたテキストがnameと等しいエンティティを検索して取り出します。
普通なら、送信されたフォームから検索テキストを取り出し、そのテキストを含むエンティティを検索する処理を自分で考えて書かないといけません。が、リポジトリを利用していれば、そんな面倒なことはしません。ただ単に「メソッドの宣言をJpaRepositoryに追記する」というだけでいのです。
MyDataRepository.javaを開き、下のリスト欄を参考にして書き換えましょう。書き換えた部分は、☆マークのメソッドの宣言だけです。これを1行追記しました。
public List<MyData> findByName(String name);メソッドの宣言文を書いただけで、具体的な実装などはまったくありませんが、これでOKなのです。後は、/findにアクセスした時の処理を行うSampleControllerクラスのfindメソッドを下のリスト欄のように書き換えるだけです。ここでは、以下のようにメソッドを呼び出していますね。
Iterable<MyData> list = repository.findByName(fstr);
findByNameを呼び出しています。これで、送られてきたテキストがnameと等しいエンティティを検索して取り出します。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※MyDataRepositoryインターフェイス package com.tuyano.libro.bootapp; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository public interface MyDataRepository extends JpaRepository<MyData, Integer> { public List<MyData> findByName(String name); // ☆ } ※SampleControllerに記述 @RequestMapping(value="/find", method=RequestMethod.POST) public String find(Model model, @RequestParam("find") String fstr) { Iterable<MyData> list = repository.findByName(fstr); model.addAttribute("datas", list); return "helo"; }
※関連コンテンツ
「初心者のためのSpring Bootプログラミング入門」に戻る