검색 조건 쿼리 :
where절에.and(),.or()메서드 체이닝 사용
기본 구조
.select() .from() .where(조건1.and(조건2).or(조건3) ... ) .fetchOne();참고
.select().from()=.selectFrom()
이름이 member1이면서 나이가 10살인 사람 조회
@Test
public void search() {
// 이름이 member1이면서 나이가 10살인 사람 조회
Member findMember = queryFactory
.selectFrom(member) // .select, .from을 합친 것
.where( // where 조건 추가: .and, .or로 체이닝해서 조건 추가 가능
member.username.eq("member1")
.and(member.age.eq(10))
)
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}
where 절에 username과 age 조건이 and로 묶인 것을 확인할 수 있다.

일치 : eq()
불일치 : ne(), eq().not()
예시
member.username.eq("member1") // username = 'member1' member.username.ne("member1") //username != 'member1' member.username.eq("member1").not() // username != 'member1'
isNotNull()
예시
member.username.isNotNull() //이름이 is not null
in(), notIn(), between()
예시
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
>= : goe()> : gt()<= : loe()< : lt()참고
goe: greaterOrEqual
gt: greaterThan
loe: lowerOrEqual
lt: lowerThan
예시
member.age.goe(30) // age >= 30 member.age.gt(30) // age > 30 member.age.loe(30) // age <= 30 member.age.lt(30) // age < 30
like : like() (주의: %를 직접 입력해줘야함 - 아래 예시 참고)
like %문자열% : .contains()
like 문자열% : .startsWith()
예시
member.username.like("member%") //like 검색 member.username.contains("member") // like ‘%member%’ 검색 member.username.startsWith("member") //like ‘member%’ 검색
검색 조건 쿼리 작성시, where절에 param으로 여러개를 넘기면 and로 묶인다.
김영한 선생님은 and 조건만 있는 경우 이 방법을 선호하신다고 한다!
@Test
public void searchAndParam() {
// 이름이 member1이면서 나이가 10살인 사람 조회
Member findMember = queryFactory
.selectFrom(member)
.where(// where: param 넘긴 것들 다 and로 묶임
member.username.eq("member1"),
member.age.eq(10) // .and 말고 그냥 ,로 끊어서 작성해도 and로 JPQL 작성됨.
)
.fetchOne();
assertThat(findMember.getUsername()).isEqualTo("member1");
}