페이지구현
컨트롤러
// 로그인한 회원이 등록한 상품들 조회
@GetMapping("/api/products")
public Page getProducts(
@RequestParam("page") int page,
@RequestParam("size") int size,
@RequestParam("sortBy") String sortBy,
@RequestParam("isAsc") boolean isAsc,
@AuthenticationPrincipal UserDetailsImpl userDetails
) {
Long userId = userDetails.getUser().getId();
page = page - 1;
return productService.getProducts(userId, page , size, sortBy, isAsc);
}
서비스
public Page getProducts(Long userId, int page, int size, String sortBy, boolean isAsc) {
Sort.Direction direction = isAsc ? Sort.Direction.ASC : Sort.Direction.DESC;
Sort sort = Sort.by(direction, sortBy);
Pageable pageable = PageRequest.of(page, size, sort);
return productRepository.findAllByUserId(userId, pageable);
}
레포지토리
public interface ProductRepository extends JpaRepository< Product, Long> {
Page findAllByUserId(Long userId, Pageable pageable);
}
Dto 로 바꾼것
@Transactional
public List getPagePlan1(int p){
int page = p - 1;
// Sort.Direction direction = Sort.Direction.DESC;
Sort sort = Sort.by(Sort.Direction.ASC, "createdAt");
Pageable pageable = PageRequest.of(page, 5, sort);
Page planPage = planRepository.findAll(pageable);
// 실험
Pageable pageable1 = planPage.getPageable();
long totalElements = planPage.getTotalElements();
boolean last = planPage.isLast();
int totalPages = planPage.getTotalPages();
int number = planPage.getNumber();
int size = planPage.getSize();
Sort sort1 = planPage.getSort();
int numberOfElements = planPage.getNumberOfElements();
boolean first = planPage.isFirst();
boolean empty = planPage.isEmpty();
List result = planPage.stream()
.map(plan -> new PlanAllResponseDto(plan,replyRepository.findAllByPlan(plan)))
.collect(Collectors.toList());
return result;
}
{
"content": [
{
"createdAt": "2021-07-21T09:12:02.543",
"modifiedAt": "2021-07-21T09:12:02.543",
"planId": 1,
"title": "테스트 제목1",
"content": "내용1",
"planWriter": "작성자",
"planPassword": "1234",
"success": 0
},
{
"createdAt": "2021-07-21T09:12:02.757",
"modifiedAt": "2021-07-21T09:12:02.757",
"planId": 2,
"title": "테스트 제목2",
"content": "내용2",
"planWriter": "작성자",
"planPassword": "1234",
"success": 0
},
{
"createdAt": "2021-07-21T09:12:02.764",
"modifiedAt": "2021-07-21T09:12:02.764",
"planId": 3,
"title": "테스트 제목3",
"content": "내용2",
"planWriter": "작성자",
"planPassword": "1234",
"success": 0
},
],
"pageable": {
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"offset": 0,
"pageNumber": 0,
"pageSize": 5,
"unpaged": false,
"paged": true
},
"totalElements": 7,
"last": false,
"totalPages": 2,
"number": 0,
"size": 5,
"first": true,
"sort": {
"sorted": true,
"unsorted": false,
"empty": false
},
"numberOfElements": 5,
"empty": false
}
Author And Source
이 문제에 관하여(페이지구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@cwangg897/페이지구현저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)