<필요 패키지>
org.springframework.data.domain.Page : 페이징을 위한 클래스
org.springframework.data.domain.PageRequest : 현재 페이지와 한 페이지에 보여 줄 게시물 개수 등을 설정하여 페이징을 요청하는 클래스
org.springframework.data.domain.Pageable : 페이징을 처리하는 클래스
** JPA 환경을 구축했다면 JPA 라이브러리에 포함되었으니 추가로 설치할 필요는 없다
<Repository>
Page<Question> findAll(Pageable pageable);
Pageable 객체를 받아 Page<Question> 타입 객체 반환하는 findAll 메서드 작성
<Service>
public Page<Question> getList(int page){
Pageable pageable= PageRequest.of(page,10);
return this.questionRepository.findAll(pageable);
}
PageRequest.of(page,10)은 page는 조회할 페이지, 10은 한 페이지에 보여 줄 게시물의 개수
<Controller>
@GetMapping("/list")
public String list(Model model,@RequestParam(value = "page", defaultValue = "0") int page)
{
//List<Question> questionList=this.questionService.getList();
Page<Question> paging=this.questionService.getList(page);
model.addAttribute("paging",paging); //Model 클래스를 사용하여 조회한 질문 목록 데이터를 템플릿에 전달
return "question_list";
}
주소?page=숫자로 원하는 페이지로 이동 가능
최신순으로 데이터 조회하기
<Service>
public Page<Question> getList(int page){
List<Sort.Order> sorts=new ArrayList<>();
sorts.add(Sort.Order.desc("createDate"));
Pageable pageable= PageRequest.of(page,10,Sort.by(sorts));
return this.questionRepository.findAll(pageable);
}
PageRequest.of의 세번째 매개변수는 Sort 객체이다
작성일시 최신순으로 조회하기 위해 Sort.Order.desc("createDate")로 작성
<참고>
'WEB > Spring' 카테고리의 다른 글
UserDetailsService (0) | 2024.02.25 |
---|---|
BCryptPasswordEncoder(비크립트패스워드인코더) (0) | 2024.02.24 |
Validation (0) | 2024.02.22 |
DTO(Data Transfer Object) (0) | 2024.02.01 |
Entity에 테이블 맵핑 (0) | 2024.01.25 |