오봉이와 함께하는 개발 블로그
Querydsl - 동적 쿼리(Where 다중 파라미터 사용) 본문
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
'BE > JPA' 카테고리의 다른 글
Querydsl - SQL Function 호출하기 (0) | 2022.09.19 |
---|---|
Querydsl - 수정, 삭제 벌크 연산 (0) | 2022.09.19 |
Querydsl - 동적 쿼리(BooleanBuilder) (0) | 2022.09.18 |
Querydsl - 프로젝션 결과 반환 (@QueryProjection) (0) | 2022.09.18 |
Querydsl - 프로젝션 결과 반환 (DTO 조회) (0) | 2022.09.18 |
Comments