반응형
Query DSL게시글은 대부분 인프런의 김영한님의 강의인 '실전! Query DSL' 기반으로 내용을 정리했습니다.
검색 조건 쿼리
코드로 먼저 확인해보자.
@Test
public void search() {
Member findMember = queryFactory
.selectFrom(member)
.where(member.username.eq("member1")
.and(member.age.eq(10)))
// .where(member.username.eq("member1"), member.age.eq(10)) 와 동일
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
.select와 .from의 경우는 .selectFrom으로 합칠 수 있다. 그리고 where절에 조건이 하나가 아닌 .and나 .or를 이용해 메서드 체인으로 연결할 수 있다. 위 코드의 경우는 member username이 member1이고 member의 age가 10인 Member를 찾으라는 내용이다. 그리고 AND의 경우는 굳이 체인으로 .and() 하지 않아도 파라미터로 넘기면 자동으로 and 처리가 된다.
JPQL이 제공하는 모든 검색 조건 제공
member.username.eq("member"1) // username = 'member1'
member.username.ne("member1") // username != 'member1'
member.username.eq("member1").not() // username != 'member1'
member.username.isNotNull() // 이름이 is not null
member.age.in(10, 20) // age in(10, 20)
member.age.notIn(10, 20) // age not in (10, 20)
member.age.between(10, 30) // between 10, 30
member.age.goe(30) // age >= 30
member.age.gt(30) // age > 30
member.age.loe(30) // age <= 30
member.age.lt(30) // age < 30
member.username.like("member%") // like 검색
member.username.contains("member") // like %member% 검색
member.username.startsWith("member") // like member% 검색
반응형