Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

집합 본문

인프런/[인프런] QueryDsl

집합

Seung__ 2021. 9. 1. 23:52

1. 예제


  • tuple : 다양한 타입이 여러개 일 경우 사용
  • tuple.get~ 으로 꺼낼 수 있음.
  • 실무에서는 DTO로 꺼내서 사용함. 
  public void aggregation(){
        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);
    }

 

2. GroupBy


  • groupBy() : 어떤거를 기준으로 그룹으로 묶을래?
  • groupBy(team.name) : 팀의 이름으로 묶음
    • tuple은 team 이름을 기준으로 묶여있음(팀 이름, 해당 팀 멤버의 나이 평균)
  • Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: 
    Column "TEAM1_.NAME" must be in the GROUP BY list; SQL statement:
  • team.name으로 GroupBy되어야 한다고 에러가 발생.
   /**
     * 팀 이름과 각 팀의 평균 연령 구하기
     * @throws Exception
     */
    @Test
    public void group() throws Exception{
        List<Tuple> result = queryFactory
                .select(team.name, member.age.avg())
                .from(member)
                .join(member.team, team)
                .groupBy(team.name) //팀 이름으로 그룹
                .fetch();
        Tuple teamA = result.get(0);
        Tuple teamB = result.get(1);
        assertThat(teamA.get(team.name)).isEqualTo("teamA");
        assertThat(teamA.get(member.age.avg())).isEqualTo(15);

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

    }

 

 

3.GitHub : 210901 GroupBy


 

GitHub - bsh6463/Querydsl

Contribute to bsh6463/Querydsl development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] QueryDsl' 카테고리의 다른 글

서브쿼리, SubQuery  (0) 2021.09.02
Join  (0) 2021.09.02
페이징  (0) 2021.09.01
정렬  (0) 2021.09.01
결과 조회  (0) 2021.09.01
Comments