Controller
// 식물사전 리스트 조회
@GetMapping("/v1/dictionaries")
public ResponseEntity<ApiResponse<Page<DictionaryListResponseDto>>> getDictionaryList(
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "10") int size) {
return ResponseEntity.ok(ApiResponse.success(dictionaryService.getDictionaryList(page, size)));
}
🎯 @RequestParam 으로 page, size 를 받고 defaultValue 를 설정함으로서 다른 입력이 없으면 기본 값을 설정해준다.
🎯 Page<> 로 반환하고 싶은 스타일로 묶어준다.
Service
// 식물사전 리스트 조회
@Transactional(readOnly = true)
public Page<DictionaryListResponseDto> getDictionaryList(int page, int size) {
// Pageable 객체 생성
Pageable pageable = PageRequest.of(page - 1, size);
// 식물사전 전체 조회
Page<Dictionaries> dictionariesPage = dictionaryRepository.findAll(pageable);
// Dto 변환
Page<DictionaryListResponseDto> dtoPage = dictionariesPage.map(dictionaries -> {
DictionaryListResponseDto dictionaryListResponseDto = new DictionaryListResponseDto(dictionaries.getTitle(), dictionaries.getUserName());
return dictionaryListResponseDto;
});
return dtoPage;
}
// Pageable 객체 생성
Pageable pageable = PageRequest.of(page - 1, size);
🎯 Pageable 객체를 만들어준다.
- 페이지 인덱스는 0 부터 시작하므로 사용자가 입력한 page 에서 1 을 빼준다.
Page<Dictionaries> dictionariesPage = dictionaryRepository.findAll(pageable);
🎯 DB 에 저장된 데이터를 페이징된 데이터로 바꿔준다.
✨ 페이징된 데이터로 바꾸면 위와 같은 메서드를 사용할 수 있다.
Application
@SpringBootApplication
@EnableJpaAuditing
@EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO)
public class SpringUsersettingApplication {
public static void main(String[] args) {
SpringApplication.run(SpringUsersettingApplication.class, args);
}
}
🎯 @EnableSpringDataWebSupport(pageSerializationMode = EnableSpringDataWebSupport.PageSerializationMode.VIA_DTO)
어노테이션을 Application 위에 붙여서 출력되는 페이징된 객체를 간단하게 필요한 정보만 나오도록 간소화 시킬 수 있다.
'컴퓨터 프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Swagger UI 적용 (3) | 2024.11.02 |
---|---|
[Spring] Soft Delete (1) | 2024.11.02 |
[Spring] Discord 알림 구현 (0) | 2024.10.16 |
[Spring] TransactionalEventListener (0) | 2024.10.11 |
[Spring] Projection 및 예시코드 설명 (0) | 2024.10.07 |