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

[블로그프로젝트] 6. JpaRepository 로 데이터 update,delete 해보기

by dantriss 2023. 2. 13.

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

IDE : IntelliJ

언어 : Java

DB : MySQL

빌드관리 도구 : Maven

OS : iOS

참고유튜브 : 메타코딩


insert, select에 이어 delete와 update까지 진행해보자. 

update이기 때문에 PutMapping을 사용하고 user클래스에서 user_idx를 @id 어노테이션으로 지정했기에

파라미터값으로 id를 받고, user클래스 전체를 @RequestBody 어노테이션과 함께 받는다.

그 후 잘못된 Id값을 사용자가 입력한다면 수정할 수 없다는 메세지를 return 해준다.

비밀번호와 이메일값을 받아서 user클래스에 set해줘서 새로운 비밀번호와 이메일값으로 update를 진행한다.

insert,select,update가 /detail로 같지만 매핑이 달라서 알아서 다르게 구분할 수 있다.

 

@PutMapping("/detail/{id}")
@Transactional // 함수 시작할 때 작동이 되어서 함수 종료시에 자동 commit됨
public User update(@PathVariable int id, @RequestBody User requestUser) {
    System.out.println("password : "+requestUser.getPassword());
    System.out.println("email : "+requestUser.getEmail());
    System.out.println("user_idx : "+id);


    User user =userRepository.findById(id).orElseThrow(()->{
        return new IllegalArgumentException( "수정할 수 없습니다");
            });

    user.setPassword(requestUser.getPassword());
    user.setEmail(requestUser.getEmail());

    return user;
}

 

body에 바꾸고자하는 비밀번호와 이메일을 작성하고 send를 해보면 postman에서 변한 값을 return 해준다.

 

postman에서도 바뀐 데이터를 확인 할 수 있고, DBeaver를 확인해보면 값이 변경된걸 확인할 수 있다.

 

select와 마찬가지로 존재하지 않는 유저의 정보를 수정하고자 하면, 미리 설정해준대로 수정할 수 없다는 메시지가 출력된다.

 

 

다음은 delete를 테스트해보자.

@DeleteMapping을 해용해서 원하는 데이터를 삭제할 수 있다.

user클래스에서 @Id 어노테이션으로 user_idx를 지정했기때문에 id값을 파라미터로 받아서 사용한다.

이전과 마찬가지로 존재하지 않는 유저를 삭제하고하면 exception처리를 해준다.

@DeleteMapping("/detail/{id}")
public String delete(@PathVariable int id) {

        try {
            userRepository.deleteById(id);
        }catch (EmptyResultDataAccessException exception){
            return "없는 아이디입니다.";
    }
    return "아이디 삭제완료";
}

 

테스트를 위해서 postman에서 delete로 설정 후 주소값을 입력하고 삭제를 원하는 id값을 입력하고 send를 한다면 아이디 삭제완료라는 문자가 return되고 DBeaver에서 user_idx가 3인 유저는 삭제되게 된다.

댓글