6. 스프링 데이터 리포지터리에 쿼리 정의
- 쿼리 접두사 ( 예 : findBy )로 시작하고, 그 다음 쿼리에 이용할 엔티티 클래스 필드가 나와야 함
▪︎ CarRepository 인터페이스 생성
① 단일 조건으로 검색
public interface CarRepository extends CrudRepository<Car, Long>{
// * < 엔티티 클래스 이름, PK 데이터 타입 >
// 단, PK 데이터 타입은 wrapper 클래스명으로 넘겨주어야 함
// ( long이 아닌 Long )
// * JPA에서는 일반적인 검색은 직접 구현하지 않음. 여기서는 선언만 함.
// * 스프링 데이터 리포지토리에 다음 쿼리 정의
// 1. 단일 조건으로 검색
// 브랜드로 자동차 검색
List<Car> findByBrand(String brand);
// 색상으로 자동차 검색
List<Car> findByColor(String color);
// 연도로 자동차 검색
List<Car> findByYear(int year);
② 복합 조건으로 검색
// 2. 복합 조건으로 검색
// * By 키워드 다음에 And 및 Or 키워드를 이용해 여러 필드 지정 가능
// 브랜드와 모델로 자동차 검색
List<Car> findByBrandAndModel(String brand, String model);
// 브랜드나 색상으로 자동차 검색
List<Car> findByBrandOrColor(String brand, String color);
③ 쿼리 정렬하여 검색
// 3. 쿼리 정렬하여 검색
// 브랜드로 자동차를 검색하고, 연도로 정렬
List<Car> findByBrandOrderByYearAsc(String brand);
④ @Query 애너테이션 이용
- JPA가 직접 SQL문을 생성하지 않고, 이 애너테이션으로 전달하는 SQL 사용
- SQL문 작성 규칙
• from 뒤에는 Entity명 ( 소문자로 입력할 경우 에러 발생 )
• 별칭 사용 ( as 없이 한칸 띄고 입력 )
'백엔드 > Spring Boot' 카테고리의 다른 글
JPQL 예제 실습 - @Query (0) | 2023.08.24 |
---|---|
모던 웹 애플리케이션 개발 - 3. JPA를 이용한 데이터베이스 생성 및 접근 (1) (0) | 2023.08.21 |
모던 웹 애플리케이션 개발 - 1. 환경과 툴 설정 (0) | 2023.08.21 |
6. 블로그 기획하고 API 만들기 흐름 요약 (0) | 2023.08.14 |
Maven Project를 Gradle Project로 변경하기 (0) | 2023.08.11 |