이번에는 3번째 방법인 JPA로 페이징처리를 해보겠다.
3가지 방법중 JPA로 페이징 처리하는것이 제일 간단하고 vue와 연동하는데에 있어서 편리해서
본 프로젝트에 JPA 페이징 처리를 하였다.
JPA는 mybatis와는 다르게 Page타입으로 반환을 받는다.
Page타입으로 반환을 받으면 여러 인터페이스를 제공받을 수 있는데
content에는 게시글에 대한 정보를 가져올 수 있고
content를 모두 반환받으면 pageable도 같이 반환을 받는데 여기서 pageSize와 pageNumber의 정보를 받을 수 있다.
그 외에도 totalPages(전체 페이지 수), totalElements(전체 게시글 수)에 대한 것도 같이 반환이 되기 때문에
더 편리하게 사용할 수 있다고 느꼈다.
우선 api호출시 불러올 쿼리부터 Repository에 작성하였는데 밑줄 친 findCarsByIsDel 메서드는
Select *
From Car
Where isDel = 'N' 이라는 쿼리를 실행시킨다.
파라미터로 isDel, pageable을 넣어주었는데
pageable에는 page, size가 담겨있다.
사용자로부터 page, size에 대한 값을 받아 오도록 하면 된다.
CarService에서 pageRequest에 page,size를 담고 Repository로 반환 시켜준 모습.
GetMapping으로 page, size변수를 받아와 헤더에 실어 주면 페이징 처리가 되는 것을 볼 수 있다!
PostMan으로 확인을 해보자
page 번호는 0번부터 시작한다. size는 5이기 때문에 1번~5번글까지 나오면 성공!
5번글까지 잘 나온것을 볼 수 있다!
'Spring boot' 카테고리의 다른 글
Springboot [게시판 카테고리별 검색기능] (0) | 2022.09.15 |
---|---|
Springboot [게시판 검색기능] (0) | 2022.09.15 |
Springboot [페이징 처리] (rownum 쿼리 이용) [2] (0) | 2022.09.13 |
Springboot [페이징 처리] (rownum 쿼리 이용) [1] (0) | 2022.09.13 |
Springboot [페이징 처리] (limit 쿼리를 이용) (0) | 2022.09.13 |