오봉이와 함께하는 개발 블로그

Querydsl - 동적 쿼리(Where 다중 파라미터 사용) 본문

BE/JPA

Querydsl - 동적 쿼리(Where 다중 파라미터 사용)

오봉봉이 2022. 9. 18. 23:55
728x90

동적 쿼리 - Where 다중 파라미터 사용

private List<Member> searchMember2(String usernameCond, Integer ageCond) {
    return queryFactory
            .selectFrom(member)
            .where(usernameEq(usernameCond), ageEq(ageCond))
            .fetch();
}
private BooleanExpression usernameEq(String usernameCond) {
    if (usernameCond == null) {
        return null;
    }
    return member.username.eq(usernameCond);
    // return usernameCond != null ? member.username.eq(usernameCond) : null; -> 삼항 연산자사용 가능
}
private BooleanExpression ageEq(Integer ageCond) {
    if (ageCond == null) {
        return null;
    }
    return member.age.eq(ageCond);
    // return ageCond != null ? member.age.eq(ageCond) : null; -> 삼항 연산자 사용 가능
}
  • where 조건에 null이 들어가면 무시한다.
  • 메서드를 다른 쿼리에서도 재활용 할 수 있다.
  • 쿼리 자체의 가독성이 높아진다.

조합 가능

private List<Member> searchMember2(String usernameCond, Integer ageCond) {
    return queryFactory
            .selectFrom(member)
            .where(allEq(usernameCond, ageCond))
            .fetch();
}

private BooleanExpression allEq(String usernameCond, Integer ageCond) {
    return usernameEq(usernameCond).and(ageEq(ageCond));
}
  • null 체크는 주의해서 처리해야 한다.
  • 메소드 체인 방식으로 사용 가능.
인프런 김영한 지식공유자님 강의 : 실전! Querydsl
728x90
Comments