개발이 좋아서/QueryDSL이 좋아서

17장 동적 쿼리 - Where 다중 파라미터 사용

zoaseo 2023. 5. 17. 16:44

1)

@Test
public void 동적쿼리_WhereParam() throws Exception {
 String usernameParam = "member1";
 Integer ageParam = 10;
 List<Member> result = searchMember2(usernameParam, ageParam);
 Assertions.assertThat(result.size()).isEqualTo(1);
}
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;
}

2) 조합가능

private BooleanExpression allEq(String usernameCond, Integer ageCond) {
 return usernameEq(usernameCond).and(ageEq(ageCond));
}

※ null 체크는 주의해서 처리해야함