티스토리 뷰

안녕하세요.
Querydsl 집합 쿼리에 대해 포스팅해보겠습니다.

@Test
public void aggregation() throws Exception {
    List<Tuple> result = queryFactory
            .select(
                    member.count(),
                    member.age.sum(),
                    member.age.avg(),
                    member.age.max(),
                    member.age.min())
            .from(member)
            .fetch();

    Tuple tuple = result.get(0);

    assertThat(tuple.get(member.count())).isEqualTo(4);
        assertThat(tuple.get(member.age.sum())).isEqualTo(100);
        assertThat(tuple.get(member.age.avg())).isEqualTo(25);
        assertThat(tuple.get(member.age.max())).isEqualTo(40);
        assertThat(tuple.get(member.age.min())).isEqualTo(10);

Tuple 객체로 반환한다.

DTO로 바로 반환하는 방법을 많이 쓴다.

/*
    팀의 이름과 각 팀의 평균 연령을 구해라
    */
@Test
public void group() throws Exception {
    List<Tuple> fetch = 
        queryFactory.select(team.name, member.age.avg())
            .from(member)
            .join(member.team, team)
            .groupBy(team.name)
            .fetch();

    Tuple teamA = fetch.get(0);
    Tuple teamB = fetch.get(1);

    assertThat(teamA.get(team.name)).isEqualTo("TEAM A");
    assertThat(teamA.get(member.age.avg())).isEqualTo(15);

    assertThat(teamB.get(team.name)).isEqualTo("TEAM B");
    assertThat(teamB.get(member.age.avg())).isEqualTo(35);
}

having()도 사용가능

집합

www.inflearn.com/course/Querydsl-%EC%8B%A4%EC%A0%84#

'Dev > Spring Data' 카테고리의 다른 글

[Querydsl] 7. 결과조회  (0) 2021.01.19
[Querydsl] 6. Querydsl Where절  (0) 2021.01.19
[Querydsl] 5. JPQL vs Querydsl 비교  (0) 2021.01.19
[Querydsl] 4. 예제용 도메인 생성  (0) 2021.01.19
[Querydsl] 3. JPA yml 설정  (0) 2021.01.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함