paging 처리
게시판 등에서
몇 번째 페이지인지 데이터가 몇개 씩 내려오는지,
총 몇개의 데이터가 전체적으로 들어있는지
따라서 몇개의 페이지 까지 그릴수 있는지에 대한 정보가 필요함
SELECT * FROM study.user where 1 =1 limit 20, 10;
#뒤는 몇개의 데이터가 들어오는지
#앞은 몇 부터 시작하는지
# 0 -> 1 button
# 10-> 2 button
# 20-> 3 button
order by id desc id기준으로 뒤에서 부터
개발자는 페이지 0번 부터 다루지만 버튼으로 표시되는 것은 1부터임.
@GetMapping("")
public Header<List<UserApiResponse>> search(@PageableDefault(sort = "id",direction = Sort.Direction.ASC,size = 15) Pageable pageable){
log.info("{}",pageable);
return userApiLogicService.search(pageable);
}
옵션 지정
@PageableDefault(sort = "id",direction = Sort.Direction.ASC,size = 15)
정렬 기준 id, 방향 오름차순 , 15개 씩.
public Header<List<UserApiResponse>> search(Pageable pageable) {
Page<User> users = userRepository.findAll(pageable);
//pageable 은 페이지 번호가 변수로 들어오는데 GetMapping을 공백으로 지정했지만
http://localhost:8080/api/user?page=0 이런식으로 원하는 페이지 지정 가능.
따라서 page가 0이라면 pageable은 0번째 페이지에 속하는 유저들이 Page<User> users에
들어가게 되고 이를 출력 해 주기 위해서 UserApiResponse로 바꿔줘야 하므로
users를 돌면서 User를 UserApiResponse로 바꿔주고 이것들을 collect해서 List로 만든것을
userApiResponseList에 초기화 시킴.
List<UserApiResponse> userApiResponseList = users.stream().map(user ->response2(user))
.collect(Collectors.toList());
return Header.OK(userApiResponseList);
//리스트를 Header의 타입으로 삼으면 데이터는 리스트형 데이터고 이것을 출력하면 그 안에 있는 모든 객체들이
json 타입으로 모두 출력됨.
}
'Spring' 카테고리의 다른 글
스프링 부트 프로젝트 (Architecture & TDD & REST API) (0) | 2019.11.24 |
---|---|
orderInfo 구현 (0) | 2019.11.18 |
Controller 추상화 (0) | 2019.11.17 |
Code Refactoring : JPA Enum 형태 관리 (0) | 2019.11.17 |
CRUD Logic 구현 (0) | 2019.11.17 |