반응형
1. 문제 상황
- 유저 수정 시 Postman에서는 수정된 결과가 보여지나, DB 상에서는 제대로 update 되지 않는 상황 발생.
2. 해결 과정
- UserUpdateResponseDto 생성.
- 리턴 타입 UserResponseDto에서 UserUpdateResponseDto 로 변경.
3. 문제 발생 이유
- User Entity에 update 메서드가 존재하지 않았음.
[문제 코드]
더보기
UserController
@PatchMapping("/{id}")
public ResponseEntity<UserResponseDto> updateUser(@PathVariable Long id,
@RequestBody UserUpdateRequestDto requestDto){
return new ResponseEntity<>(userService.updateUser(id, requestDto.getUsername(), requestDto.getPassword(), requestDto.getEmail()), HttpStatus.OK);
}
UserService
@Transactional
public UserResponseDto updateUser(Long id, String username, String password, String email) {
User user = userRepository.findByIdOrElseThrow(id);
user.isPassword(password);
return new UserResponseDto(username, email);
}
[문제 해결 및 개선된 코드]
더보기
UserUpdateResponseDto
package schedule.schedule.dto;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class UserUpdateResponseDto {
private String username;
private String email;
}
User
public void update(String username, String email){
this.username = username;
this.email = email;
}
UserController
@PatchMapping("/{id}")
public ResponseEntity<UserUpdateResponseDto> updateUser(@PathVariable Long id,
@RequestBody UserUpdateRequestDto requestDto){
UserUpdateResponseDto userUpdateResponseDto = userService.updateUser(id, requestDto);
return new ResponseEntity<>(userUpdateResponseDto, HttpStatus.OK);
}
UserService
@Transactional
public UserUpdateResponseDto updateUser(Long id, UserUpdateRequestDto requestDto) {
User user = userRepository.findByIdOrElseThrow(id);
user.update(requestDto.getUsername(), requestDto.getEmail());
return new UserUpdateResponseDto(user.getUsername(), user.getEmail());
}
반응형
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
25.04.08 TIL - Spring 기초 프로젝트 1일차 (2) | 2025.04.08 |
---|---|
25.04.07 TIL - 일정 관리 개선 앱 회고 (2) | 2025.04.07 |
25.04.03 TIL - MVC 패턴(1) (2) | 2025.04.03 |
25.04.02 TIL - Spring Framework, Spring Boot, Gradle (2) | 2025.04.02 |
25.04.01 TIL - 프레임워크, 라이브러리, Annotation, Lombok (2) | 2025.04.01 |