728x90
스프링에서는 Repository 메서드 생성 규칙을 사용하면 Jpa에서 자동으로 쿼리를 생성해준다.
메서드에 이름을 붙일 때는 첫 단어를 제외한 이후 단어들의 첫 글자를 대문자로 설정해야 JPA에서 정상적으로 인식하고 쿼리를 자동으로 만들어준다.
findAll()
모든 데이터를 조회한다.
findAll()
// SELECT * FROM 테이블;
findBy()
SQL문의 where 절 역할을 수행하는 구문이다.
findBy 뒤에 엔티티의 필드값을 입력해서 사용한다.
// SELECT * FROM 테이블 WHERE id=아이디;
findById(int id)
// SELECT * FROM 테이블 WHERE 변수이름 = 변수값;
findByName(String name)
조건 규칙
AND, OR (여러 개)
조건을 여러 개 설정하기 위해 사용한다.
findByNameAndEmail(String name, String email)
Contains (포함)
Contains : 지정된 텍스트를 포함하는 데이터를 검색한다.
JPA 메서드 규칙을 찾아보면 Containing, Contains, isContaining이 있는데 세 가지 모두 동일한 기능을 수행한다.
like도 동일한 기능을 수행하지만, 매개변수로 %를 같이 넘겨줘야 하기 때문에
자동으로 %를 추가해주는 contains를 사용하는 것이 편리하다....!
// SELECT * FROM 테이블 WHERE name LIKE '%keyword%'
findByNameContains(String keyword)
// LIKE는 %까지 포함해서 넘겨줘야 한다.
findByNameLike(String keyword) // findByNameLike("%kim%");
StartsWith, EndsWith (시작하는 값, 끝나는 값)
StartsWith : 특정 문자로 시작하는 값을 검색한다.
EndsWith : 특정 문자로 끝나는 값을 검색한다.
contains와 마찬가지로 StartingWith, EndingWith와 동일한 기능을 수행하기 때문에
더 짧은 Starts, Ends를 사용하자...!
// SELECT * FROM 테이블 WHERE name LIKE 'keyword%'
findByNameStartsWith(String keyword)
// SELECT * FROM 테이블 WHERE name LIKE '%keyword'
findByNameEndsWith(String keyword)
OrderBy (정렬)
OrderBy: 데이터를 정렬할 때 사용한다.
// 나이를 내림차순으로 이름 조회
// SELECT * FROM 테이블 WHERE name = 'keyword' ORDER BY age DESC;
findByNameOrderByAgeDesc(String keyword);
// 가격 순으로 이름 조회
findByNameOrderByPriceAsc(String name)
public interface ProductRepository extends JpaRepository<Product, Long> {
// 이름으로 상품 조회
Optional<Product> findByName(String name);
// Description에 키워드가 포함된 상품 조회
List<Product> findAllByDescriptionContains(String description);
}
728x90
'BE > Spring Boot' 카테고리의 다른 글
[Java] Lombok이란? / 주요 어노테이션 정리 (0) | 2025.02.10 |
---|---|
[Spring Boot] DTO 생성 방법 (단일 파일, 이너 클래스) / 생성 시 주의사항 (0) | 2025.02.10 |
[Spring Boot] JPA란? / JPA 구성 요소(Entity, Repository) / JPA로 DB 다루기 (1) | 2025.02.06 |
[Spring Boot] 서버 -> 클라이언트로 데이터 전달 (ResponseEntity) (0) | 2025.02.05 |
[Spring Boot] 클라이언트 -> 서버로 데이터 전달 (RequestMapping) (0) | 2025.02.05 |