[Querydsl] ์ผ์ด์ค(Case)
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ QueryDSL์ case ํํ์์ ์ ๋ฆฌํ๋ค.
caseํํ์์ด๋? SQL์์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ๋ค๋ฅด๊ฒ ๋ฐํํ๋ ๊ตฌ๋ฌธ. QueryDSL์์๋ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
1. ๊ฐ๋จํ case
1
2
3
4
5
6
7
List<String> results = queryFactory
.select(member.age
.when(10).then("10๋")
.when(20).then("20๋")
.otherwise("๊ธฐํ")) // ๊ทธ ์ธ
.from(member)
.fetch();
๊ฐ์ด ์ ํํ ์ผ์นํ ๋ ์ฐ๋ ๋ฐฉ์์ด๋ค.
2. ๋ณต์กํ case (CaseBuilder)
๋ฒ์ ์กฐ๊ฑด์ CaseBuilder๋ก ์ฒ๋ฆฌํ๋ค.
1
2
3
4
5
6
7
8
List<String> results = queryFactory
.select(new CaseBuilder()
.when(member.age.lt(20)).then("10๋ ๋ฏธ๋ง")
.when(member.age.between(20, 29)).then("20๋")
.when(member.age.between(30, 39)).then("30๋")
.otherwise("๊ธฐํ"))
.from(member)
.fetch();
| ๋ฐฉ์ | ์ฉ๋ |
|---|---|
.when(๊ฐ).then() | ์ ํ ์ผ์น |
new CaseBuilder().when(์กฐ๊ฑด) | ๋ฒ์ยท๋ณต์ก ์กฐ๊ฑด |
3. ๋์ ์ฟผ๋ฆฌ (BooleanBuilder)
์กฐ๊ฑด์ ๋ฐ๋ผ ์ฟผ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ์กฐ๋ฆฝํ๋ค.
1
2
3
4
5
6
7
8
BooleanBuilder builder = new BooleanBuilder();
if (condition1) builder.and(member.age.gt(20));
if (condition2) builder.and(member.name.like("ํ๊ธธ๋%"));
List<Member> results = queryFactory
.selectFrom(member)
.where(builder) // ๋์ ์กฐ๊ฑด
.fetch();
๐ ์ ๋ฆฌ
1
2
3
4
QueryDSL case
โโ ๊ฐ๋จ .when(๊ฐ).then().otherwise()
โโ ๋ณต์ก new CaseBuilder().when(์กฐ๊ฑด)
โโ ๋์ BooleanBuilder๋ก ์กฐ๊ฑด ์กฐ๋ฆฝ
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| case | ์กฐ๊ฑด๋ณ ๊ฐ ๋ฐํ |
| CaseBuilder | ๋ฒ์ยท๋ณต์ก ์กฐ๊ฑด ์ฒ๋ฆฌ |
| BooleanBuilder | ๋์ ์กฐ๊ฑด ์กฐ๋ฆฝ |
case๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ๋ฐ๊ฟ ๋, BooleanBuilder๋ ๋์ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ์ด๋ค. ๋ค๋ง ์ง๋์น๊ฒ ๋ณต์กํ๋ฉด ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋ ์ ์ ํ ํ์ฉํ์.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.