동적쿼리를 해결해보자
해결하는 방법은 두 가지 방법이 있다.
- BooleanBuilder
- Where 다중 파라미터 사용
하나씩 살펴보자!
1. BooleanBuilder
null이 아닌 경우에만 검증 로직을 적용하고 싶을 때 다음과 같이 적용할 수 있다.
2. Where 다중 파라미터 사용 (실무에서 많이 사용한다!) by 김영한님
이 방법을 사용하면 코드가 한층 깔끔해진다.
아래 코드를 보고 바로 이해할 수 있기 때문이다.
private List<Member> searchMember2(String usernameCond, Integer ageCond) {
return queryFactory
.selectFrom(member)
.where(usernameEq(usernameCond), ageEq(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;
}
조합도 가능하다! null 체크는 주의해서 처리해야 한다.
private BooleanExpression allEq(String usernameCond, Integer ageCond) {
return usernameEq(usernameCond).and(ageEq(ageCond));
}
- where 조건에 null 값은 무시된다
- 메서드를 다른 쿼리에서 재활용할 수 있다.
- 쿼리자체의 가독성이 높아진다.
'공부 > Spring' 카테고리의 다른 글
HikariCP란 무엇이고 어떤 풀 사이즈를 적용해야 할까? (0) | 2022.10.20 |
---|---|
QueryDSL에서 수정, 삭제 벌크연산 하는방법을 알아보자 (0) | 2022.08.26 |
[QueryDSL] 프로젝션(SELECT 대상)에 따라 다른 결과를 가져와 보자 (0) | 2022.08.26 |
[QueryDSL] 기본 문법을 알아보자 (0) | 2022.08.26 |
QueryDSL을 적용해보자 (0) | 2022.08.26 |
댓글