Springboot/블로그만들기

[Springboot] 블로그 만들기 (11)_Select 테스트_다중행

21종 2023. 11. 24. 19:38

Controller

//http://localhost:8001/blog/dummy/users
@GetMapping("/dummy/users")
public List<User> list(){
    return userRepository.findAll(); // 전체행 조회
}

 

값은 너무 잘 나오는데.. 가독성이 너무 떨어진다.

JSON VIEW 라는 크롬 확장 프로그램을 설치하자

 

https://chromewebstore.google.com/detail/jsonview/gmegofmjomhknnokphhckolhcffdaihd?utm_source=ext_app_menu

 

JSONView

브라우저에서 JSON 문서를 보세요.

chrome.google.com

 

크롬에 추가한 후 새로고침을 하면 매우 이쁘게 나온다.


Pagnation 처리가 된 Select

@GetMapping("/dummy/user")
public Page<User> pageList(@PageableDefault(size = 2, sort = "id", direction =  Sort.Direction.DESC) Pageable pageable){
    // 결과 값을 2건씩 불러오고, 정렬은 id를 기준으로 정렬하고, 최신순으로 불러온다.
    Page<User> users = userRepository.findAll(pageable);
    return users;
}

 

두개의 데이터가 잘 나온다.

그럼 두번째 페이지도 잘 나오는지 확인해보자

 

두번째 데이터값을 확인하는 방법은 쿼리스트링을 사용하면 된다.

 

http://localhost:8001/blog/dummy/user?page=1 // 두번째 페이지

// page=0 부터 시작이므로 page=2 가 두번째 페이지가 된다.

 

http://localhost:8001/blog/dummy/user?page=0 // 첫번째 페이지

http://localhost:8001/blog/dummy/user? // 첫번째 페이지

총 3건의 데이터가 있으므로 두번째 페이지는 3개 중에 두개를 제외한 한 건만 조회된다.


만약 페이징정보를 출력하고 싶지 않다면 getContent()를 이용해서 제외하고 출력할 수 있다.

@GetMapping("/dummy/user")
public List<User> pageList(@PageableDefault(size = 2, sort = "id", direction =  Sort.Direction.DESC) Pageable pageable){
    // 결과 값을 2건씩 불러오고, 정렬은 id를 기준으로 정렬하고, 최신순으로 불러온다.
    Page<User> pagingUser = userRepository.findAll(pageable);

    List<User> users = pagingUser.getContent();
    return users;
}


분기문도 처리 할 수 있다.

@GetMapping("/dummy/user")
public List<User> pageList(@PageableDefault(size = 2, sort = "id", direction =  Sort.Direction.DESC) Pageable pageable){
    Page<User> pagingUser = userRepository.findAll(pageable);

    if(pagingUser.isFirst()) {
        // 첫번째 페이지 일 경우
    }
    if(pagingUser.isLast()) {
        // 마지막 페이지 일 경우
    }

    List<User> users = pagingUser.getContent();
    return users;
}

 

 


참고 유튜브 (메타코딩님 강의)

https://youtu.be/dPfjqBB-T4U?si=vSMRQbhFn66g-2gg