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 값은 무시되는 것을 이용한 구현
메소드를 다른 쿼리에서도 재활용이 가능하다.
쿼리 자체의 가독성이 높아진다.
쿼리끼리 조합도 가능하다.