[Querydsl] ์ ๋ ฌ(Sort)
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ QueryDSL์ ์ ๋ ฌ์ ์ ๋ฆฌํ๋ค.
QueryDSL์์ ์ ๋ ฌ์ ๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
orderBy: DB ๋จ์์ ์ ๋ ฌ (JPQL ์ ์ฌ)Comparator(sort): ๊ฐ์ ธ์จ ๋ค ์๋ฐ์์ ์ ๋ ฌ (Java 8 ์คํธ๋ฆผ)
1. orderBy โ DB ์ ๋ ฌ
1
2
3
4
List<Product> products = queryFactory
.selectFrom(product)
.orderBy(product.price.desc(), product.name.asc()) // ๊ฐ๊ฒฉโ, ์ด๋ฆโ
.fetch();
๐ก ์ฌ๋ฌ ์ ๋ ฌ ๊ธฐ์ค์ ์ฝค๋ง๋ก ๋์ดํ๋ฉด ์์๋๋ก ์ฐ์ ์ ์ฉ๋๋ค. (๊ฐ๊ฒฉ ๋ด๋ฆผ์ฐจ์ โ ๊ฐ์ผ๋ฉด ์ด๋ฆ ์ค๋ฆ์ฐจ์)
2. Comparator โ ์๋ฐ ์ ๋ ฌ
1
2
3
4
5
List<Product> products = queryFactory
.selectFrom(product).fetch()
.stream()
.sorted(Comparator.comparing(Product::getPrice).reversed()) // ๊ฐ๊ฒฉโ
.collect(Collectors.toList());
| ๋ฐฉ์ | ์ ๋ ฌ ์์น | ํน์ง |
|---|---|---|
| orderBy | DB | ํจ์จ์ (๊ถ์ฅ) |
| Comparator | ์๋ฐ(๋ฉ๋ชจ๋ฆฌ) | ์ ์ฐํ๋ ์์ ์๋ชจโ |
3. ๋ค์ค ์ ๋ ฌ
1
.orderBy(product.category.asc(), product.price.desc()) // ์นดํ
๊ณ ๋ฆฌโ, ๊ฐ๊ฒฉโ
๐ ์ฃผ์์ฌํญ๊ณผ ํ
๐ก
nullsFirst(),nullsLast()๋ก null ๊ฐ์ ์ ๋ ฌ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค.
โ ๏ธ
Comparator์ ๋ ฌ์ DB์์ ๊ฐ์ ธ์จ ์ดํ ์ด๋ค์ง๋ฏ๋ก, DB ์ ๋ ฌ(orderBy)๋ณด๋ค ์์ ์๋ชจ๊ฐ ํฌ๋ค. ๊ฐ๊ธ์ orderBy๋ฅผ ์ฐ์.
๐ ์ ๋ฆฌ
1
2
3
4
QueryDSL ์ ๋ ฌ
โโ orderBy DB ์ ๋ ฌ (๊ถ์ฅ), ๋ค์ค ๊ธฐ์ค ๋์ด
โโ Comparator ์๋ฐ ์ ๋ ฌ (์ ์ฐ, ์์โ)
โโ null ์ฒ๋ฆฌ nullsFirst() / nullsLast()
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| orderBy | DB์์ ์ ๋ ฌ |
| Comparator | ์๋ฐ์์ ์ ๋ ฌ |
| ๋ค์ค ์ ๋ ฌ | ์ฌ๋ฌ ๊ธฐ์ค ์์๋๋ก |
์ ๋ ฌ์ ๊ฐ๊ธ์ orderBy(DB)๋ฅผ ์ฐ๋ ๊ฒ ํจ์จ์ ์ด๋ค. ์๋ฐ Comparator๋ ์ ์ฐํ์ง๋ง ๋ฉ๋ชจ๋ฆฌ์์ ์ ๋ ฌํ๋ฏ๋ก ์์ ์๋ชจ๊ฐ ํฌ๋ค๋ ์ ์ ๊ธฐ์ตํ์.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.