🧱 BooleanBuilder

정의

BooleanBuilderQuerydsl에서 조건을 동적으로 조합하기 위해 사용하는 빌더 클래스이다. 여러 조건을 순서대로 추가하면서 최종 검색 조건을 만들 때 사용한다.

if 분기와 함께 쓰기 좋고, 검색 조건이 많아질수록 유용하다.

🧩 역할

  • 동적 조건을 조합한다
  • 검색 조건이 많을 때 가독성을 높인다
  • 조건 추가 여부를 if로 제어할 수 있다
  • 최종적으로 BooleanExpression을 만들어 where에 전달한다

🛠 사용법

기본 예시

BooleanBuilder builder = new BooleanBuilder();

if (status != null) {
    builder.and(user.status.eq(status));
}

if (name != null) {
    builder.and(user.name.contains(name));
}

List<User> result = queryFactory
        .selectFrom(user)
        .where(builder)
        .fetch();

andAnyOf, orAllOf 예시

BooleanBuilder builder = new BooleanBuilder();

builder.andAnyOf(
        user.reset.eq("N"),
        user.reset.eq("Y").and(user.modDate.loe(expireDatetime))
);

🧩 주요 메서드

메서드 기능
and AND 조건으로 추가한다
or OR 조건으로 추가한다
not 현재 조건을 부정한다
andAnyOf 여러 조건 중 하나라도 만족하는 조건을 AND로 묶는다
orAllOf 여러 조건을 AND로 묶어서 OR 조건에 사용한다

⚠️ 주의사항

  • BooleanBuilder는 Querydsl 전용 클래스다.
  • 조건이 많아지면 오히려 복잡해질 수 있으니 필요한 곳에만 사용한다.
  • 단순한 조건은 BooleanExpression을 직접 조합하는 편이 더 깔끔할 수 있다.
  • null 조건은 if로 걸러서 추가하는 것이 일반적이다.

📌 정리

  • BooleanBuilder는 Querydsl의 동적 조건 조합용 빌더다.
  • 검색 조건이 자주 바뀌는 화면이나 API에서 유용하다.
  • 최종적으로 where에 넣을 조건을 만들 때 사용한다.

연결문서

댓글남기기