본문 바로가기

Spring

페이징 처리

반응형

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