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

개발자되기 프로젝트

JPA의 페이징과 정렬 본문

인프런/[인프런] Spring Data JPA

JPA의 페이징과 정렬

Seung__ 2021. 8. 29. 17:21

1. JPA 의 페이징


  • JPA에서 페이징 하는 방법
  • 조건
    • 검색 조건 : 나이 10살
    • 정렬 조건 : 이름으로 내림차순
    • 페이징 조건 : 첫 번째 페이지, 페이지 당 보여 줄 데이터는 3건

 

 

2. 예제


  • setFirstResult() : 몇 번 째 부터?
  • setMaxResult() : 몇 개?
  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();
    }

    /**
     * total count가져오기.
     */
    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(){
        //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);

        //then
        Assertions.assertThat(members.size()).isEqualTo(3);
        Assertions.assertThat(totalCount).isEqualTo(5);
    }

    select
        member0_.member_id as member_i1_0_,
        member0_.age as age2_0_,
        member0_.team_id as team_id4_0_,
        member0_.user_name as user_nam3_0_ 
    from
        member member0_ 
    where
        member0_.age=? 
    order by
        member0_.user_name desc limit ?
        
        
        
    select
        count(member0_.member_id) as col_0_0_ 
    from
        member member0_ 
    where
        member0_.age=?

 

 

3.GitHub : 210829 JPA, Paging


 

GitHub - bsh6463/SpringDataJpa

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

github.com

 

'인프런 > [인프런] Spring Data JPA' 카테고리의 다른 글

Query Method, 벌크성 수정 쿼리  (0) 2021.08.29
SpringDataJpa 페이징, 정렬  (0) 2021.08.29
@Query, 반환 타입  (0) 2021.08.29
@Query, 파라미터 바인딩  (0) 2021.08.29
@Query, 값, DTO 조회하기  (0) 2021.08.29
Comments