Spring

[Spring] querydsl - 동적쿼리 만드는 법

퉁그리 2022. 1. 5. 12:35

BooleanExpression을 써 쿼리를 조합하며 사용할 수 있다.

 

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

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

private BooleanExpression usernameEq(String usernameCond) {
    return usernameCond != null ? member.username.eq(usernameCond) : null;
}
private BooleanExpression ageEq(Integer ageCond) {
    return ageCond != null ? member.age.eq(ageCond) : null;
}
private BooleanExpression allEq(String usernameCond, Integer ageCond) {
    return usernameEq(usernameCond).and(ageEq(ageCond));
}

where조건에 null 값은 무시되는 것을 이용한 구현

메소드를 다른 쿼리에서도 재활용이 가능하다.

쿼리 자체의 가독성이 높아진다.

쿼리끼리 조합도 가능하다.

 

출처 : 실전! Querydsl - 인프런 | 학습 페이지 (inflearn.com)