본문 바로가기
❤️‍🔥TIL (Today I Learned)

[TIL] 2023-01-19(59day) / 프로젝트(4day)

by elicho91 2023. 1. 20.

프로젝트(4)


👉  JAP Paging

 

# Controller

@GetMapping("/admin/customer-list")
    public List<UserResponseDto> getAllCustomers(Pageable pageable) {
        return adminService.getAllCustomers(pageable);
    }

 

# Service

 @Override
    @Transactional(readOnly = true)
    public List<UserResponseDto> getAllCustomers(Pageable pageable) {
        List<User> userList = userRepository.findAllByOrderByCreatedAtDesc(pageable);
        if (userList.isEmpty()) throw new IllegalArgumentException("회원 목록이 없습니다.");
        List<UserResponseDto> customerList = new ArrayList<>();
            for(User user : userList){
                customerList.add(new UserResponseDto(user));
            }
            return customerList;
    }

 

# Repository

 List<User> findAllByOrderByCreatedAtDesc(Pageable pageable);

🙋‍♂️ 소감 : 

PageRequestDto 를 만들어서 @RequestBody로 값을 넘겨주는 페이징 처리를 구현하다가,

팀원분께서 JPA Pageable 페이징 방식으로 적용된 코드를 보여주셔서 Pageable로 리팩토링하였다.

포스트맨에서 직접 파람을 넣어서 요청해도 되고 @PageableDefault 어노테이션을 사용하여

사이즈, 페이지, 소트 등 기본값을 설정해줘도 된다.

페이징방식이 여러가지가 있는거 같은데 Pageable 사용법이 가장 간단히 처리할 수 있는거 같다.

어제는 맡은 Admin API는 모두 구현하였고, 오늘은 모든 예외처리와 시큐리티 적용을 하였다.

내일은 기본 기능구현 최종 머지를 하고 추가기능 구현에 박차를 가해야겠다.

😈 아는 내용이라고 그냥 넘어가지 않기! 😈

댓글