Spring Data JPA では findByLastname など自動でメソッドを生成してくれる機能があります。こちらの記事が詳しく記載されています。
【Spring Data JPA】自動実装されるメソッドの命名ルール – Qiita
様々なクエリを自動実装してくれていますが、それでも自分で作成した SQL を実行したいことがあります。
そんなときには @Query を使用して、SQLとメソッドをマップさせます。
Repositoryインターフェース で次のように記載します。これでいつもどおり Autowired してメソッドを使用することが出来ます。
public interface UserRepository extends JpaRepository<User, Long> { @Query("select u from User u where u.emailAddress = ?1") User findByEmailAddress(String emailAddress); }
?1 は第一引数として指定された値が入ります。もし第二引数の指定があって使いたい場合には ?2 と記載します。
また、Spring Data JPA関係なくSQLの話になりますが、Userテーブルのエイリアスを u として記載を短くしています。