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 |