JPA에서 쿼리 메소드 안에 지원되는 키워드

2018. 8. 1. 15:14SpringFramework

반응형

쿼리 메소드는 스프링 데이터 JPA의 핵심적인 기능중 하나로 메소드 이름으로 쿼리를 생성할 수 있다는 장점이 있다. 메소드 이름으로 쿼리를 생성을 위해 인터페이스에서 사용할 사용자 쿼리 메소드를 정의해 준다. EmailAddress와 LastName의 칼럼을 where 절의 조건으로 질의하는 사용자 쿼리 메소드는 인터페이스에 다음과 같이 선언해 줄 수 있다.

public interface UserRepository extends Repository<User, Long> {

  List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}

위와 같이 인터페이스에서 먼저 사용자 쿼리 메서드를 정의해준 다음 인터페이스를 구현하는 서비스에서 구체적인 비즈니스 로직을 추가해 내용을 구현해 줄 수 있다. 쿼리 메소드는 where 절에 들어가는 조건과 관련한 것을 메소드로 지원한다. 쿼리 메소드에 대한 내용들은 별도로 정리하면 다음과 같다.

메소드 이름 안에서 지원되는 키워드

KeywordSampleJPQL snippet
AndfindByLastnameAndFirstname… where x.lastname = ?1 and x.firstname = ?2
OrfindByLastnameOrFirstname… where x.lastname = ?1 or x.firstname = ?2
Is,EqualsfindByFirstname,findByFirstnameIs,findByFirstnameEquals… where x.firstname = 1?
BetweenfindByStartDateBetween… where x.startDate between 1? and ?2
LessThanfindByAgeLessThan… where x.age < ?1
LessThanEqualfindByAgeLessThanEqual… where x.age ⇐ ?1
GreaterThanfindByAgeGreaterThan… where x.age > ?1
GreaterThanEqualfindByAgeGreaterThanEqual… where x.age >= ?1
AfterfindByStartDateAfter… where x.startDate > ?1
BeforefindByStartDateBefore… where x.startDate < ?1
IsNullfindByAgeIsNull… where x.age is null
IsNotNull,NotNullfindByAge(Is)NotNull… where x.age not null
LikefindByFirstnameLike… where x.firstname like ?1
NotLikefindByFirstnameNotLike… where x.firstname not like ?1
StartingWithfindByFirstnameStartingWith… where x.firstname like ?1(parameter bound with appended %)
EndingWithfindByFirstnameEndingWith… where x.firstname like ?1(parameter bound with prepended %)
ContainingfindByFirstnameContaining… where x.firstname like ?1(parameter bound wrapped in %)
OrderByfindByAgeOrderByLastnameDesc… where x.age = ?1 order by x.lastname desc
NotfindByLastnameNot… where x.lastname <> ?1
InfindByAgeIn(Collection<Age> ages)… where x.age in ?1
NotInfindByAgeNotIn(Collection<Age> age)… where x.age not in ?1
TruefindByActiveTrue()… where x.active = true
FalsefindByActiveFalse()… where x.active = false
IgnoreCasefindByFirstnameIgnoreCase… where UPPER(x.firstame) = UPPER(?1)


출처: http://happygrammer.tistory.com/158 [해피그래머의 개발 노트]

반응형

'SpringFramework' 카테고리의 다른 글

Restful API  (0) 2019.01.04
hibernate.hbm2ddl.auto  (0) 2018.07.07
MyBatis+Oracle  (0) 2018.07.02
Mybatis 사용시 parameterType="String" 오류  (0) 2018.06.08
STS 단축키  (0) 2018.06.08