본문 바로가기
프로젝트/Spring Boot 블로그프로젝트

[블로그프로젝트] 5. JpaRepository 로 데이터 select 해보기

by dantriss 2023. 2. 13.

유튜브에서 블로그 만들기 프로젝트를 따라하면서 나의 스킬을 조금더 레벨업 하고자 한다.

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


 

지난번 insert에 이어 select, update, delete도 할 수 있다.

기본적인 매핑들만 기억한다면 된다고 본다.

GetMapping = select

PutMapping = update

PostMapping = insert

DeleteMapping = delete 

 

우선 특정 유저 검색해보기를 진행해보자

특정유저를 select 하는거기에 GetMapping을 사용하고 user_idx를 기준으로 검색하고자한다. 

@GetMapping("/detail/{user_idx}")
public User detail(@PathVariable int user_idx) {
    User user =  userRepository.findById(user_idx).orElseThrow(new Supplier<IllegalArgumentException>() {
        @Override
        public IllegalArgumentException get() {
            return new IllegalArgumentException("유저 "+user_idx+" 는 없는 유저입니다.");
        }

        /* 람다식
        *  User user =  userRepository.findById(user_idx).orElseThrow(()-> {
        *  return new IllegalArgumentException("유저 "+user_idx+" 는 없는 유저입니다.")
        * });
        * */

    });
        return user;
    }

그 후 postman에서 해당 주소를 입력하고 원하는 유저의 user_idx를 입력하면 DBeaver에서 일치하는 회원의 정보가 출력되게 된다.

 

만약 DB에 존재하지 않는 user_idx를 검색하게 된다면, 예외처리로 해당유저는 없는유저라고 메세지를 띄워주도록 exception 처리를 했다.

 

 

 

 

여러명의 회원의 정보를 출력할 수도 있다. User클래스를 List형식으로 받는 메서드를 작성한다.

@GetMapping("/select/list")
public List<User> list() {

    return userRepository.findAll();
}

 

postman에서 해당 주소를 넣고 실행해보면 모든 회원의 정보를 띄워준다.

 

모든 유저의 데이터를 출력하지 않고 특정개수만큼만 출력할 수도 있다.

size=2로 출력할 유저의 데이터 개수를 2개로 지정하고 출력해 보았다.

@GetMapping("/select/list/page")
public List<User> pageList(@PageableDefault(size = 2) Pageable pageable) {
    Page<User> page =  userRepository.findAll(pageable); // Page<User>를 리턴하면 페이징 정보까지 볼 수 있음
    List<User> user = page.getContent();
    return user;
}

 

 

 

변수명 page를 return하게 된다면 페이지의 정보까지도 볼 수 있다.

 

 

댓글