검색 조건 쿼리

@Test
void search() {
    Member findMember = queryFactory
            .selectFrom(member)
            .where(member.username.eq("member1")
                    .and(member.age.eq(10)))
            .fetchOne();
    
    assertThat(findMember.getUsername()).isEqualTo("member1");
}
  1. and() / or()
  2. selectFrom()

테스트 코드를 실행하면 and 쿼리가 나가는 것을 확인할 수 있습니다.

Untitled

AND 조건을 파라미터로 처리

AND 조건을 메서드 체이닝 말고 파라미터로 받을 수 있습니다. where() 는 파라미터를 여러개 받을 수 있도록 지원합니다.

Untitled

@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);
}

메서드 체이닝을 써도 괜찮고 파라미터로 받아도 괜찮습니다.

하지만 AND 조건만 있다면 파라미터로 받는 것을 선호합니다.

왜냐면 파라미터로 받을 때 null 이 들어가게 된다면 아예 무시하기 때문에 동적쿼리를 더 깔끔하게 작성할 수 있기 때문입니다.

자세히