예시로는 이름이 같고, 나이가 입력값보다 큰 값들을 가져오는 것이다.
@Repository
public class MemberJpaRepository {
@PersistenceContext
private EntityManager em;
...
public List<Member> findByUsernameAndAgeGreaterThan(String username, int age) {
return em.createQuery("select m from Member m" +
" where m.username = :username" +
" and m.age > :age")
.setParameter("username", username)
.setParameter("age", age)
.getResultList();
}
}
}
그냥 jpa의 repository 코드
사실 이렇게 jpql을 통해 작성하는 것도 엄청 복잡하지는 않지만 오타가 나기 쉽다.
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByUsername(String username);
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}
data jpa 코드 마법같다... 변수이름들만 신경쓰면 내가 생각하는 대부분의 쿼리는 구현 없이 만들어준다.
우와...!
findBy(조회) username(조건:같은) and(그리고) age greaterThan(조건:큰)
아래 링크를 들어가면 더 자세한 활용법을 알 수 있다. 나도 문서보면서 더 잘 활용해야겠다.
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods