베오
DCode
베오
전체 방문자
오늘
어제
  • 분류 전체보기 (218)
    • 공지사항 (1)
    • 잡설 (1)
    • Programming (33)
      • [C] (1)
      • [Java] (4)
      • [Python] (2)
      • [Android] (2)
      • [Network] (0)
      • [Operation System] (2)
      • [Spring Boot] (22)
      • [Docker] (0)
    • Algorithm (31)
      • 자료구조 (2)
      • 알고리즘 (Java) (14)
      • 알고리즘 (기초) (15)
    • Coding Test (131)
      • BOJ (131)
      • Algospat (0)
    • 이론적인거 (14)
      • 보안 (5)
      • 오류 해결 (2)
      • 디자인 패턴 (5)
      • 네트워크 (1)
      • 기타 (1)
    • 최신기술 (4)
      • 블록체인 (1)
    • [Project] (1)

블로그 메뉴

  • 🐈‍⬛ GitHub
  • 📫 방명록
  • 🔖 태그

공지사항

인기 글

티스토리

hELLO · Designed By 정상우.
베오

DCode

Programming/[Spring Boot]

[Spring Data JPA] - 쿼리 메서드의 조건자 키워드

2023. 3. 29. 21:05

서술어(Predicate) 부분에서 사용할 수 있는 몇가지 조건자 키워드이다.

Is

보통 생략하는 키워드

값의 일치를 조건으로 사용한다.

// Is, Equals 키워드를 사용한 쿼리 메서드
Product findByNumberIs(Long number); // findByNumber 과 똑같다.
Product findByNumberEquals(Long number); // findByNumber 과 똑같다.

(Is)Not

값의 불일치를 사용하는 키워드

Not만 사용해도 무방

// Not 키워드를 사용한 쿼리 메서드
Product findByNumberIsNot(Long number); // number 가 아닌 데이터 조회
Product findByNumberNot(Long number); // Is 생략이 가능하다.

(Is)Null, (Is)NotNull

값이 null인지 확인하는 키워드

// Null 키워드를 사용한 쿼리 메서드
List<Product> findByUpdatedAtIsNull(); // updatedAt이 null 인 데이터 조회
List<Product> findByUpdatedAtNull(); // Is 생략이 가능하다.
List<Product> findByUpdatedAtIsNotNull(); // updatedAt이 null 이 아닌 데이터 조회
List<Product> findByUpdatedAtNotNull(); // Is 생략이 가능하다.

(Is)True, (Is)False

boolean 타입으로 지정된 컬럼값을 확인하는 키워드

// True, False 키워드를 사용한 쿼리 메서드
Product findByisActiveTrue(); // Is 생략이 가능하다.
Product findByisActiveIsTrue(); // isActive 가 true 인 데이터 조회
Product findByisActiveIsFalse(); // isActive 가 false 인 데이터 조회
Product findByisActiveFalse(); // Is 생략이 가능하다.

And, Or

여러 조건을 묶을 때 사용하는 키워드

// And, Or 키워드를 사용한 쿼리 메서드
Product findByNumberAndName(Long number, String name); // number 와 name 모두 일치하는 데이터 조회
Product findByNumberOrName(Long number, String name); // number 또는 name 이 일치하는 데이터 조회

(Is)GreaterThan, (Is)LessThan, (Is)Between

숫자나, datetime 컬럼을 대상으로 비교 연산 키워드

  • GeraterThan
    • 초과 연산
  • LessThan
    • 미만 연산
  • Between
    • 경곗값이 포함된 사이값

경계값을 포함하려면 Equal 추가

// GreaterThan, LessThan, Between 키워드를 사용한 쿼리 메서드
List<Product> findByPriceIsGraterThan(Long price); // price 가 해당 값 초과인 데이터 조회
List<Product> findByPriceGraterThan(Long price); // Is 생략이 가능하다.

List<Product> findByPriceIsGraterThanEqual(Long price); // price 가 해당 값 이상인 데이터 조회
List<Product> findByPriceGraterThanEqual(Long price); // Is 생략이 가능하다.

List<Product> findByPriceIsLessThan(Long price); // price 가 해당 값 미만인 데이터 조회
List<Product> findByPriceLessThan(Long price); // Is 생략이 가능하다.

List<Product> findByPriceIsLessThanEqual(Long price); // price 가 해당 값 이하인 데이터 조회
List<Product> findByPriceLessThanEqual(Long price); // Is 생략이 가능하다.

List<Product> findByPriceIsBetween(Long lowPrice, Long highPrice); // lowPrice <= price <= highPrice 인 데이터 조회
List<Product> findByPriceBetween(Long lowPrice, Long highPrice); // Is 생략이 가능하다.

(Is)StartingWith(==StartsWith), (Is)EndingWith(==EndsWith), (Is)Containing(==Contains), (Is)Like

컬럼값에서 일부 일치 여부 확인

‘%’ 키워드와 동일하게 동작한다.

  • StartingWith
    • ‘%데이터’
  • EndingWith
    • ‘데이터%’
  • Containing
    • ‘%데이터%’
  • Like
    • 전달하는 값에 %를 명시적으로 입력해주는 키워드
// 부분 일치 키워드를 사용한 쿼리 메서드
List<Product> findByNameIsLike(String name); // 명시적으로 %를 입력한 값을 받는 name 컬럼의 부분 일치 데이터 조회
List<Product> findByNameLike(String name); // Is 생략이 가능하다.

List<Product> findByNameIsContaining(String name); // 파라미터 name 이 포함된('%{name}%') 데이터 조회
List<Product> findByNameContaining(String name); // Is 생략이 가능하다.
List<Product> findByNameContains(String name); // Contains 라고 써도 된다.

List<Product> findByNameIsStartingWith(String name); // 파라미터 name 으로 시작하는('{name}%') 데이터 조회
List<Product> findByNameStartingWith(String name); // Is 생략이 가능하다.
List<Product> findByNameStartsWith(String name); // StartsWith 라고 써도 된다.

List<Product> findByNameIsEndingWith(String name); // 파라미터 name 으로 끝나는('%{name}') 데이터 조회
List<Product> findByNameEndingWith(String name); // Is 생략이 가능하다.
List<Product> findByNameEndsWith(String name); // EndsWith 라고 써도 된다.


Uploaded by N2T

'Programming > [Spring Boot]' 카테고리의 다른 글

Spring Data JPA 활용하기  (0) 2023.03.29
[Spring Data JPA] - 쿼리 메서드의 주제(Subject) 키워드  (0) 2023.03.29
테스트 주도 개발(TDD)  (0) 2023.03.16
테스트코드 작성 (이론편)  (0) 2023.03.16
컨트롤러 테스트 코드 작성  (0) 2023.03.16
    'Programming/[Spring Boot]' 카테고리의 다른 글
    • Spring Data JPA 활용하기
    • [Spring Data JPA] - 쿼리 메서드의 주제(Subject) 키워드
    • 테스트 주도 개발(TDD)
    • 테스트코드 작성 (이론편)
    베오
    베오

    티스토리툴바