-
웹 계층 개발 - 상품 수정JPA/JPA 활용 2023. 7. 11. 18:12
상품을 등록하고 나중에 수정할 일이 있을 때 상품을 수정하는 기능이다.
@GetMapping("items/{itemId}/edit") public String updateItemForm(@PathVariable("itemId") Long itemId, Model model) { Book item = (Book) itemService.findOne(itemId); // 상품은 책만 있다고 가정 BookForm form = new BookForm(); form.setId(item.getId()); form.setName(item.getName()); form.setPrice(item.getPrice()); form.setStockQuantity(item.getStockQuantity()); form.setAuthor(item.getAuthor()); form.setIsbn(item.getIsbn()); model.addAttribute("form", form); // 수정이니까 원래 있던 값을 가져와야함 return "items/updateItemForm"; }
GetMapping으로 id에 맞는 수정 페이지로 들어간다. @PathVariable 애노테이션은 itemId에 맞는 url로 연결시켜주는 역할을 한다. 상품 수정을 누르면 원래 기존 값이 뭐였는지 들어있어야하기 때문에 itemService에서 itemId로 상품을 가져온 다음에 model로 넘겨줘서 사용자가 볼 수 있게 해줘야한다.
@PostMapping("items/{itemId}/edit") public String updateItem(@PathVariable String itemId, @ModelAttribute("form") BookForm form) { Book book = new Book(); book.setId(form.getId()); book.setName(form.getName()); book.setPrice(form.getPrice()); book.setStockQuantity(form.getStockQuantity()); book.setAuthor(form.getAuthor()); book.setIsbn(form.getIsbn()); itemService.saveItem(book); return "redirect:/items"; }
PostMapping으로 값을 입력하면 실제로 데이터가 바뀌는 기능이다. @ModelAttribute로 모델을 받아온다. 그리고 new Book()을 통해 새로운 책 객체를 만들고 form에다가 다시 set으로 값을 설정해준 다음에 saveItem으로 값을 저장해준다.
상품 수정 관련 html은 상품 등록 html과 거의 유사하기때문에 생략하도록 하겠다.
'JPA > JPA 활용' 카테고리의 다른 글
웹 계층 개발 - 상품 주문과 주문 내역 (0) 2023.07.11 변경 감지와 병합(merge) (0) 2023.07.11 웹 계층 개발 - 상품 등록, 목록 조회 (0) 2023.07.11 웹 계층 개발 - 회원 등록, 목록 조회 (0) 2023.07.11 주문 기능 테스트 (0) 2023.07.11