Jpa Repository를 상속받은 인터페이스에서 findByXXX 형태로 메소드를 만들면 JPA에 의해 WHERE 절이 추가되었습니다.
그 외에도 다양한 조건을 사용할 수 있는데, 어떤 조건들을 사용할 수 있는지 정리해드리겠습니다.
기본 규칙
메소드 | 설명 |
findAll() | 전체 데이터를 조회할 수 있습니다. |
findBy() | 조건을 추가하여 전체 데이터를 조회할 수 있습니다. |
findTop5By() | 조건에 맞는 데이터 중 상위 5건만 가져옵니다. |
findDistinctBy() | 중복을 제거하여 조회할 수 있습니다. |
findFirstBy() | 조회된 데이터 중 1건만 가져옵니다. |
count() | 전체 행 수를 조회합니다. |
countBy() | 조건에 맞는 전체 행 수를 조회합니다. |
save() | 단일 데이터를 저장합니다. |
saveAll() | 여러 건의 데이터를 저장합니다. |
delete() | 단일 데이터를 삭제합니다. |
deleteAll() | 여러 건의 데이터를 삭제합니다. |
deleteBy() | 조건에 맞는 데이터를 삭제합니다. |
메서드 조건 규칙
조건 | 메소드 명명규칙 예시 | 실제 생성된 쿼리 예시 |
동일(=) | findByName | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name=? |
대소(>, >=, <, <=) | > : findByCodeIsGreaterThan | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.code>? |
>= : findByCodeIsGreaterThanEqual | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.code>=? | |
< : findByCodeIsLessThan | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.code<? | |
<= : findByCodeIsLessThanEqual | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.code<=? | |
범위(BETWEEN) | findByCodeBetween * 파라미터 2개 필요 |
select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.code between ? and ? |
포함(LIKE, NOT LIKE) | findByNameContains | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name like ? escape '\\' |
findByNameNotContains | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name not like ? escape '\\' | |
findByNameLike | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name like ? escape '\\' | |
findByNameNotLike | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name not like ? escape '\\' | |
시작, 끝 값(startWith, endWith) | findByNameStartsWith | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name like ? escape '\\' |
findByNameEndsWith | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name like ? escape '\\' | |
NULL | findByNameIsNull * 파라미터 필요 없음 |
select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name is null |
findByNameIsNotNull * 파라미터 필요 없음 |
select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name is not null | |
IN | findByNameIn * List 파라미터 필요 |
select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name in (?) |
findByNameNotIn * List 파라미터 필요 |
select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 where te1_0.name not in (?) |
정렬 규칙
종류 | 메소드 예시 | 쿼리 예시 |
오름차순 | findbyOrderByCode | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 order by te1_0.code |
내림차순 | findbyOrderByCodeDesc | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 order by te1_0.code desc |
컬럼 여러개 | findbyOrderByCodeDescNameDesc | select te1_0.id,te1_0.code,te1_0.date,te1_0.name from test_entity te1_0 order by te1_0.code desc,te1_0.name desc |