[Spring] @ManyToOne 어노테이션 6 회원정보 수정

류재성's avatar
Mar 19, 2024
[Spring] @ManyToOne 어노테이션 6 회원정보 수정
 

1. View 확인

 
notion image
데이터를 받기 위해 DTO 를 만든다.
 
@Data public static class UpdateDTO{ private String password; private String email; }
 

2. 레파지토리

 
@Transactional public User updateById(int id,UserRequest.UpdateDTO requestDTO){ User user = findById(id); user.setPassword(requestDTO.getPassword()); user.setEmail(requestDTO.getEmail()); return user; }
 
 

3. 컨트롤러

 
@GetMapping("/user/update-form") public String updateForm(HttpServletRequest request) { User sessionUser = (User) session.getAttribute("sessionUser"); //수정 페이지에 기존 데이터 들고 User user = userRepository.findById(sessionUser.getId()); request.setAttribute("user",user); return "user/update-form"; } @PostMapping("/user/update") public String update(UserRequest.UpdateDTO requestDTO){ User sessionUser = (User) session.getAttribute("sessionUser"); User user = userRepository.updateById(sessionUser.getId(),requestDTO); //세션에 업데이트값 동기화 session.setAttribute("sessionUser",user); return "redirect:/"; }
 
💡
user 데이터를 업데이트 후 세션에 다시 덮어씌운다.
 

4. View

 
<div class="card"> <div class="card-header"><b>회원수정을 해주세요</b></div> <div class="card-body"> <form action="/user/update" method="post" enctype="application/x-www-form-urlencoded"> <div class="mb-3"> <input type="text" class="form-control" placeholder="Enter username" value="{{user.username}}" disabled> </div> <div class="mb-3"> <input type="password" class="form-control" placeholder="Enter password" name="password"> </div> <div class="mb-3"> <input type="email" class="form-control" placeholder="Enter email" name="email" value="{{user.email}}"> </div> <button type="submit" class="btn btn-primary form-control">회원가입수정</button> </form>
 
Share article

{CODE-RYU};