public List<Member> findByPage(int age, int offset, int limit) {
 return em.createQuery("select m from Member m where m.age = :age order by 
m.username desc")
 .setParameter("age", age) .setFirstResult(offset)
 .setMaxResults(limit)
 .getResultList();
}
public long totalCount(int age) {
 return em.createQuery("select count(m) from Member m where m.age = :age",
Long.class)
 .setParameter("age", age)
 .getSingleResult();
}
@Test
public void paging() throws Exception {
 //given
 memberJpaRepository.save(new Member("member1", 10));
 memberJpaRepository.save(new Member("member2", 10));
 memberJpaRepository.save(new Member("member3", 10));
 memberJpaRepository.save(new Member("member4", 10));
 memberJpaRepository.save(new Member("member5", 10));
 int age = 10;
 int offset = 0;
 int limit = 3;
 //when
 List<Member> members = memberJpaRepository.findByPage(age, offset, limit);
 long totalCount = memberJpaRepository.totalCount(age);
 //페이지 계산 공식 적용...
 // totalPage = totalCount / size ...
 // 마지막 페이지 ...
 // 최초 페이지 ..
 //then
 assertThat(members.size()).isEqualTo(3); assertThat(totalCount).isEqualTo(5);
}

 

 

 

출처 : 김영한 JPA 스프링 데이터 강의

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

벌크성 수정 쿼리  (0) 2022.07.21
스프링 데이터 JPA 페이징과 정렬  (0) 2022.07.20
파라미터 바인딩  (0) 2022.07.20
@Query, 값, DTO 조회하기  (0) 2022.07.20
@Query, 리포지토리 메소드에 쿼리 정의하기  (0) 2022.07.20
복사했습니다!