๋์ ์ฟผ๋ฆฌ - Where์์ ๋ค์ค ํ๋ผ๋ฏธํฐ ์ฌ์ฉ
- ์กฐ๋ฆฝ์ ํ ์ ์์, ๋ฉ์๋๋ฅผ ๋ค๋ฅธ ์ฟผ๋ฆฌ์์ ์ฌํ์ฉ ๊ฐ๋ฅํจ
- ์ฟผ๋ฆฌ ์์ฒด์ ๊ฐ๋ ์ฑ์ด ๋์์ง
- null ์ฒดํฌ๋ ์ฃผ์ํด์ ์ฒ๋ฆฌํด์ผํจ
@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;
}
์กฐํฉ ์์
private BooleanExpression allEq(String usernameCond, Integer ageCond) {
return usernameEq(usernameCond).and(ageEq(ageCond));
}
- ์ํ์ ๋ ์ง์ ๋ฐ๋ผ ์๋น์ค ํ ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฉ์๋ ๋ง๋ค ์ ์์ - ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ด ํผ
private BooleanExpression isServicable(String statusCond, Integer dateCond) {
return IsValid(statusCond).and(DataBeweebIn(dateCond));
}