메소드 이름으로 쿼리 생성
package study.datajpa.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import study.datajpa.entity.Member;
import java.util.List;
public interface MemberRepository extends JpaRepository<Member,Long> {
List<Member> findByUsernameAndAgeGreaterThan(String username, int age);
}
@Test
public void findByUsernameAndAgeGreaterThen(){
Member m1 = new Member("AAA", 10);
Member m2 = new Member("AAA", 20);
memberRepository.save(m1);
memberRepository.save(m2);
List<Member> result = memberRepository.findByUsernameAndAgeGreaterThan("AAA", 15);
Assertions.assertThat(result.get(0).getUsername()).isEqualTo("AAA");
Assertions.assertThat(result.get(0).getAge()).isEqualTo(20);
Assertions.assertThat(result.size()).isEqualTo(1);
}
data JPA에서는 메소드이름 만으로 쿼리를 만들 수 있다.
https://spring.io/projects/spring-data-jpa#learn
Spring Data JPA
Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA-based (Java Persistence API) repositories. It makes it easier to build Spring-powered applications that use data access technologies. Implementing a data access l
spring.io
에서 버전에 맞는 reference doc > jpa query methods 에서 가능한 메소드 작명을 확인 할 수 있다.
예) https://docs.spring.io/spring-data/jpa/reference/jpa/query-methods.html
JPA Query Methods :: Spring Data JPA
As of Spring Data JPA release 1.4, we support the usage of restricted SpEL template expressions in manually defined queries that are defined with @Query. Upon the query being run, these expressions are evaluated against a predefined set of variables. Sprin
docs.spring.io
김영한 개발자님은 2개 정도 조건까지만 사용한다고 한다.
List<Member> findHelloBy();
예시로 이렇게 find...By에서 by이후에 어떤 조건이 없으면 그냥 전체조회를 시킨다.
- 조회 : find...By, read...By, query...By, get...By 등
- COUNT : count...By 반환타입 'long'
- EXISTS : exists...By 반환타입 'boolean'
- 삭제 : delete...By, remove...By 반환타입 'long'
- DISTINCT : findDistinct, findMemberDistinctBy
- LIMIT : findFirst3, findFirst, findTop, findTop3