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

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

作成:2014-07-05 10:51
更新:2014-07-05 10:51

■なぜ、処理を書かずに動くの?

それにしても、この「findByName」は、ただインターフェイスに宣言文を書いただけで、まったく処理の実装はしていません。それなのに、ちゃんと入力したテキストを元にnameの値を検索してエンティティをとってきます。なぜ、何の処理も書いてないのにメソッドがちゃんと動くのでしょう?

それは、Springに内蔵されるメソッドの自動生成機能のお陰です。Springでは、リポジトリに書かれたメソッド名と引数、返値などを解析し、それに応じた検索処理の実装を自動生成するのです。

例えば、今回のメソッドは「findByName」でした。これを「findBy」「name」と分析し、nameの項目を対象にして検索を行うメソッドを生成していたのです。リポジトリに用意できるメソッドはさまざまなものがありますが、基本的に以下の型式ぐらい覚えておくといいでしょう。
findByフィールド名 ( 引数 );
指定のフィールドから引数の値を検索し、結果を返します。返値は、List<エンティティ>型になります。
findByフィールド名Like ( 引数 );
findByフィールド名StartWith ( 引数 );
findByフィールド名EndWith ( 引数 );
指定のフィールドから引数の値をあいまい検索します。Likeをつけると一般的なあいまい検索となり、StartWith/EndWithをつけると、引数の値で始まる/終わるものを検索します。
findByフィールド名LessThan ( 引数 );
findByフィールド名GreaterThan ( 引数 );
フィールドの値が引数の値より小さい/大きいものを検索します。値の性質から、フィールドが数値型の場合に使います。
findByフィールド名True ( 引数 );
findByフィールド名False ( 引数 );
フィールドの値がtrue/falseのエンティティのみを検索します。値の性質から、真偽値のフィールドの場合に用います。

この他にも検索条件を示す単語はいくつかありますが、とりあえずこれらのものだけでも覚えて使えるようになっておくとかなりいろいろな検索が作れるようになるでしょう。

これらはいずれも、引数が1つ、返値はList型として用意しておくのが基本です。実際にいくつか検索メソッドを書いて動かしてみると動作がよくわかるでしょう。

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

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

※関連コンテンツ

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