or, and 조건을 걸 수 있다.
@Test
public void search() {
Member findMember = queryFactory
.selectFrom(QMember.member)
.where(QMember.member.username.eq("member1").and(QMember.member.age.eq(10)))
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
그리고 또 무수하게 많은 조건을 지원한다.
member.username.eq("member1") // 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%’ 검색
이 외에도 sql에 있지 않을까 싶은 것은 다 있다.
and의 경우 매개변수로 여러개의 조건을 전달할 수 있다.
@Test
public void searchAndParam() {
Member findMember = queryFactory
.selectFrom(QMember.member)
.where(QMember.member.username.eq("member1"), QMember.member.age.eq(10))
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
null
파라미터를 무시하기 때문에 동적 쿼리를 작성할 때 기가 막히게 할 수 있다.