Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

상품 등록, 상품 목록, 상품 수정 본문

인프런/[인프런] Springboot와 JPA활용 1

상품 등록, 상품 목록, 상품 수정

Seung__ 2021. 8. 6. 19:23

1. 상품 등록


  • BookForm
    - 상품 등록을 위한 fom 객체
    - 상품 정보를 전달함
    - id는 추후 상품 수정 시 사용함.
@Getter @Setter
public class BookForm {

    private Long id; //수정에 사용용

    private String name;
    private int price;
    private int stockQuantity;

    private String author;
    private String isbn;
}

 

  • ItemController
    - setter를 통해 값을 넣기 보다는
    - static 생성자를 통해 값을 넣어주자.
    - 실무에서는 setter안씀.
    @Controller
    @RequiredArgsConstructor
    public class ItemController {
    
        private final ItemService itemService;
    
        @GetMapping("/items/new")
        public String createForm(Model model){
            model.addAttribute("form", new BookForm());
            return "items/createItemForm";
        }
    
        @PostMapping("/items/new")
        public String create(BookForm form){
            Book book = new Book();
            //set 보다는 createBook 메서드를 만들어서 활용.
            //static 생성자를 활용하여 setter사용하지 말자.
            book.setName(form.getName());
            book.setAuthor(form.getAuthor());
            book.setIsbn(form.getIsbn());
            book.setPrice(form.getPrice());
            book.setStockQuantity(form.getStockQuantity());
    
            itemService.saveItem(book);
    
            return "redirect:/items";
        }
    }​

 

2. 상품 목록 조회


  @GetMapping("/items")
    public String list(Model model){
        List<Item> items = itemService.findItems();
        model.addAttribute("items", items);
        return "items/itemList";
    }

 

수정해보자

 

3. 상품 수정 : 중요!


JPA 가이드 : 변경감지(더티체크)를 활용해라.

  • updateItemForm
    - @GetMapping
    - "수정"버튼을 누르면 GetMethod로 udpateItemForm 실행됨.
    - pathVariable로 itemId를 받음
    - 해당 id로 DB에서 item가져옴.
    - 새로운 form에 DB에서 가져온 item의 정보 담음.
    - model로 form넘김.
    - 수정 화면에 DB에서 가져온 정보 표시하기 위한 목적.
    @GetMapping("items/{itemId}/edit")
    public String updateItemForm(@PathVariable("itemId") Long itemId, Model model){
        Book item = (Book) itemService.findOne(itemId);

        //수정할 때 book 엔티티가아니라 book fom을 보낼거임.
        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";
    }

  • updateItem
    - @PostMapping
    - 수정된 값을 DB에 저장.
    - 완료 후 item List화면으로 이동.
    @PostMapping("items/{itemId}/edit")
    public String updateItem(@ModelAttribute("form") BookForm form, @PathVariable("itemId") Long itemId){
        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";
    }

 

4. GitHub : 210806 Item Update


 

GitHub - bsh6463/SpringBootJPA1

Contribute to bsh6463/SpringBootJPA1 development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] Springboot와 JPA활용 1' 카테고리의 다른 글

상품 주문  (0) 2021.08.06
💥변경 감지와 병합(merge)💥  (0) 2021.08.06
회원 목록 조회  (0) 2021.08.06
회원 등록  (0) 2021.08.06
[웹 계층] 홈 화면과 레이아웃  (0) 2021.08.06
Comments