[본 포스팅은 실전! Querydsl 편을 기반으로 작성하였습니다.]
예를 들어 이름이 비어있거나 나이가 비어있을 때 데이터를 조회하기 위해선 동적 쿼리를 짜야한다.
@Test
public void dynamicQuery_WhereParam() {
String usernameParam = "member1";
Integer ageParam = null;
List<Member> result = searchMember2(usernameParam, ageParam);
assertThat(result.size()).isEqualTo(1);
}
private List<Member> searchMember2(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));
}
위와 같이 함수를 따로 빼서 체킹 하면 되는데 이렇게 따로 빼는 이유는 코드의 가독성과 재활용 면에서 좋다.
'JAVA > Querydsl' 카테고리의 다른 글
[Querydsl] 프로젝션 결과 반환 (Projections, @QueryProjection -> DTO) (0) | 2023.01.06 |
---|---|
Querydsl, Gradle에 추가해서 빌드하기 & 검색 조건 (0) | 2023.01.04 |