//when //spring data jpa 페이징은 0 번째 부터 시작이야 PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "username")); Page<Member> page = memberRepository.findByAge(10, pageRequest);
//then List<Member> content = page.getContent(); //조회된 데이터 assertThat(content.size()).isEqualTo(3); //조회된 데이터 수 assertThat(page.getTotalElements()).isEqualTo(5); //전체 데이터 수 assertThat(page.getNumber()).isEqualTo(0); //페이지 번호 assertThat(page.getTotalPages()).isEqualTo(2); //전체 페이지 번호 assertThat(page.isFirst()).isTrue(); //첫번째 항목인가? assertThat(page.hasNext()).isTrue(); //다음 페이지가 있는가? }
카운트 쿼리 분리
위에서 알 수 있듯이 반환형에 따라 count 쿼리의 여부가 결정되어져!
만약 Page 형태의 반환형이어서 count 쿼리가 나간다고 가정하면, 이때 count 쿼리를 커스텀 할 수 있어.
1 2 3
@Query(value = “select m from Member m”, countQuery = “select count(m.username) from Member m”) Page<Member> findMemberAllCountBy(Pageable pageable);
이런식으로 말야!!
쿼리가 복잡할 경우 count 쿼리 또한 복잡하게 나가기에 개발자의 최적화가 필요한 경우 위처럼 사용하면 된다 이말이야!