๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/SpringBoot

[Querydsl] ๋™์ ์ฟผ๋ฆฌ - Where์—์„œ ๋‹ค์ค‘ ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉํ•˜๊ธฐ

by OR15A 2024. 1. 8.
๋™์ ์ฟผ๋ฆฌ - 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));
}