스프링 데이터 JPA는 다양한 유형의 반환 타입을 지원한다.
List<Member> findListByUsername(String username); //컬렉션
Member findMemberByUsername(String username); //단건
Optional<Member> findOptinalByUsername(String username); //단건 Optional
페이징 조건
- 검색 조건 : 나이 10살
- 정렬 조건 : 이름 내림차순
- 페이징 조건 : 첫번째페이지, 페이지 당 데이터 3건
순수 JPA에서 페이징을 하는 방법
//순수 JPA 페이징
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();
}
page가 1일때는 -> offset=0, limit=10
page가 2일때는 -> offset=10, limit=10 이런 식으로 계산이 된다.
페이징할때 전체 개수를 알아야하므로 totalCount를 반환하는 메서드까지 작성해야한다.
스프링 데이터 JPA에서 페이징을 하는 방법
'Spring > Data JPA' 카테고리의 다른 글
[DataJPA] @Query, 레포지토리에 쿼리를 정의 (0) | 2021.04.14 |
---|---|
[Data JPA] 쿼리 메소드 (메소드명만으로 구현이 가능?!) (0) | 2021.04.14 |
[DataJPA] 스프링 데이터 JPA 인터페이스 (0) | 2021.04.14 |
댓글