ItemController
1. createForm()
@GetMapping(value = "/items/new")
public String createForm(Model model) {
model.addAttribute("form", new BookForm());
return "items/createItemForm";
}
2. create()
@PostMapping(value = "/items/new")
public String create(BookForm form) {
Book book = new Book();
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";
}
3. list()
@GetMapping(value = "/items")
public String list(Model model) {
List<Item> items = itemService.findItems();
model.addAttribute("items", items);
return "items/itemList";
}
상품 수정
3. updateItemForm ()
@GetMapping(value = "/items/{itemId}/edit")
public String updateItemForm(@PathVariable("itemId") Long itemId, Model
model) {
Book item = (Book) itemService.findOne(itemId); //상품 아이디로 책 객체를 받아온 다음에
//새로 생성한 인스턴스 form에 item의 정보들을 입력한다
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";
}
수정할 객체의 정보들을 화면에 보내는 메서드이다
@PathVariable: url에서 각 구분자에 들어오는 값을 처리해야 할 때 사용한다
4. updateItem()
/ItemController
@PostMapping(value = "/items/{itemId}/edit")
public String updateItem(@ModelAttribute("form") BookForm form) {
//updateItem을 service계층에서 따로 생성한다
itemService.updateItem(form.getId(), form.getName(), form.getPrice());
return "redirect:/items";
}
}
병합 했을 때 문제점 때문에 변경감지하는 방식으로 메소드를 구현하고 컨트롤러에 적용했다
병합에 관련한 포스트는 다음을 참고하면 된다
https://heyazoo1007.tistory.com/323
/ItemService
@Transactional
public void updateItem(Long id, String name, int price) {
Item item = itemRepository.findOne(id);
item.setName(name);
item.setPrice(price);
}
}
set을 한 후 트랜잭션 커밋 시점에 변경감지가 되어서 업데이트 쿼리를 날린다
'JPA > JPA + SpringBoot' 카테고리의 다른 글
[JPA+SpringBoot] 3/2 공부 내용 기록(웹 구현, OrderController) (0) | 2022.03.07 |
---|---|
[JPA +SpringBoot] 변경감지와 병합(dirty checking, merge) (0) | 2022.03.07 |
[JPA+SpringBoot] 3/2 공부 내용 기록(웹 구현, MemberController) (0) | 2022.03.07 |
[JPA+SpringBoot] 3/1 공부내용 기록 (0) | 2022.03.01 |
[JPA+SPRINGBOOT] 2/28 공부 내용 기록, 공부 1일차(p6spy,@Controller vs @RestController, @Transactional, 엔티티 설계) (0) | 2022.02.28 |