🔥 TIL - Day 65 Querydsl Group by
QuerydslのGroup byを検索すると、注目すべき話題が見つかりました.簡単に片付けて
本プロジェクトでは,言語別に個数を把握することが求められる.
最初に作成したクエリーは次のとおりです.
こうして実施が完了し、存在する可能性のある話題を探すためにグーグルが検索したが、案の定、達人たちの話題が出てきた.
クエリに問題はありませんが、
一般的なMySqlは上記の問題を
(明確に並べ替えていないことを示す?)
Querydslは
jojolduのコードが使用されています.
Querydslグループの最適化
https://jojoldu.tistory.com/477
本プロジェクトでは,言語別に個数を把握することが求められる.
最初に作成したクエリーは次のとおりです.
@Override
public List<ReviewRequestLanguageCount> getReviewRequestLanguageCountGroupByLanguage() {
List<Tuple> result = query.select(reviewRequest.languageName, reviewRequest.id.count())
.from(reviewRequest)
.groupBy(reviewRequest.languageName)
.fetch();
return result.stream().map(
r -> new ReviewRequestLanguageCount(r.get(0, String.class), r.get(1, Long.class))
).collect(Collectors.toList());
}
言語名(languageName)を使用してGroup byのターゲットを計算できるようになりました.発生したクエリーも予想外だった.こうして実施が完了し、存在する可能性のある話題を探すためにグーグルが検索したが、案の定、達人たちの話題が出てきた.
📌 (MySQL)Group byで自動ソート?話題
クエリに問題はありませんが、
MySql
からGroup by
を使用すると、自動的にソートされます.ただし、グループはソートする必要はありません.この無駄な仕事を取り除かなければならない.一般的なMySqlは上記の問題を
order by null
に解決した.(明確に並べ替えていないことを示す?)
Querydslは
order by null
を直接使用することは許されないが、OrderSpecifier
を使用してソート動作をカスタマイズすることができ、同様に直接実現することができる.jojolduのコードが使用されています.
public class OrderByNull extends OrderSpecifier {
public static final OrderByNull DEFAULT = new OrderByNull();
private OrderByNull() {
super(Order.ASC, NullExpression.DEFAULT, NullHandling.Default);
}
}
このようにNull(NullExpression.DEFAULT
)のソートをGroupbyを実行する場所に適用すればよい. @Override
public List<ReviewRequestLanguageCount> getReviewRequestLanguageCountGroupByLanguage() {
List<Tuple> result = query.select(reviewRequest.languageName, reviewRequest.id.count())
.from(reviewRequest)
.groupBy(reviewRequest.languageName)
// 적용
.orderBy(OrderByNull.DEFAULT)
.fetch();
return result.stream().map(
r -> new ReviewRequestLanguageCount(r.get(0, String.class), r.get(1, Long.class))
).collect(Collectors.toList());
}
クエリの結果からorder by null asc
が表示されます.📌 リファレンス
Querydslグループの最適化
https://jojoldu.tistory.com/477
Reference
この問題について(🔥 TIL - Day 65 Querydsl Group by), 我々は、より多くの情報をここで見つけました https://velog.io/@dhk22/TIL-Day-65-Querydsl-Group-byテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol