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을 한 후 트랜잭션 커밋 시점에 변경감지가 되어서 업데이트 쿼리를 날린다 

 

 

 

+ Recent posts