Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 그리디
- transaction
- db
- JPQL
- 스프링 핵심 기능
- 알고리즘
- Greedy
- Exception
- java
- SpringBoot
- pointcut
- 백준
- 스프링
- kotlin
- 김영한
- Android
- Proxy
- Spring Boot
- 자바
- jpa
- springdatajpa
- http
- 인프런
- Thymeleaf
- QueryDSL
- 스프링 핵심 원리
- JDBC
- spring
- Servlet
- AOP
Archives
- Today
- Total
개발자되기 프로젝트
상품 등록, 상품 목록, 상품 수정 본문
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
'인프런 > [인프런] 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