검색 조건
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
@Test
void search() {
Member findMember = queryFactory
// select와 from이 같으면 합칠 수 있다.
.selectFrom(member)
.where(member.username.eq("member1")
.and(member.age.eq(10))
).fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
}
select member1
from Member member1
where member1.username = ?1
and member1.age = ?2
and, or를 메서드 체인으로 연결할 수 있다.
select, from을 selectFrom으로 합칠 수 있다.
제공하는 검색 조건
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
void example() {
member.username.eq("member1")
// username != 'member1'
member.username.ne("member1")
// username != 'member1'
member.username.eq("member1").not()
// 이름이 is not null
member.username.isNotNull()
// age in (10,20)
member.age.in(10, 20)
// age not in (10, 20)
member.age.notIn(10, 20)
// between 10, 30
member.age.between(10, 30)
// age >= 30
member.age.goe(30)
// age > 30
member.age.gt(30)
// age <= 30
member.age.loe(30)
// age < 30
member.age.lt(30)
// like 검색
member.username.like("member%")
// like ‘%member%’ 검색
member.username.contains("member")
// like ‘member%’ 검색
member.username.startsWith("member")
}
}
JPQL이 제공하는 모든 검색 조건을 제공한다.
AND 조건을 파라미터로 처리
@SpringBootTest
@Transactional
public class QuerydslBasicTest {
@Test
public void searchAndParam() {
List<Member> result1 = queryFactory
.selectFrom(member)
.where(member.username.eq("member1"),
member.age.eq(10))
.fetch();
assertThat(result1.size()).isEqualTo(1);
}
}
where()의 파라미터로 검색 조건을 추가하면 and가 적용된다.
null 값을 무시하기 때문에 메서드 추출을 활용해 동적 쿼리를 깔끔하게 만들 수 있다.
Last updated