Spring Boot - item 수정

UnKnown12·2023년 1월 9일
0

Spring Boot

목록 보기
13/13

📌 개요

@Getter @Setter
public class Item {
	
	private Long id;
	private String itemName;
	private Integer price; 
	private Integer quantity;

	private Boolean open;
	private List<String> regions; 
	private ItemType itemType;
	private String deliveryCode;

	public Item() {}

	public Item(Long id, String itemName, Integer price, Integer quantity) {
		super();
		this.itemName = itemName;
		this.price = price;
		this.quantity = quantity;
	}

Spring 컨테이너 내부에서
Item() 데이터를 사용자와 주고 받는 예제 이다.

regions, itemType, deliveryCode 는 개발자가 명시된 범위에서 사용자가 요청하게 된다.

해당 비지니스 로직은
사용자의 itemId 를 조회하여 item() 데이터를 수정하는 로직이다.

📌 Edit Controller

item 수정은 메소드가 2개 필요하다

1 - 수정 할 상품을 조회할 메소드 ( GET )
2 - 수정 된 상품을 저장 후 redirect 로 사용자에게 요청처리 할 메소드

1-1. item 조회 Controller 메소드

	@GetMapping("/{itemId}/edit")
	public String editForm( @PathVariable Long itemId, Model model) {
		
		Item item = itemRepository.findById(itemId);
		model.addAttribute("item", item);
		return "basic/editForm";
	}

editForm.html 에서
item 객체의 정보를 사용자에게 할당받는다.

1-2. item 조회 Repository 메소드

	public Item findById(Long itemId) {
		return store.get(itemId);
	}

store 에는 HashMap 타입으로 
Key 값은 itemId, value 값으로 item 데이터가 담겨져 있다.

private static final Map<Long, Item> store = new HashMap<Long, Item>(); 

2-1. item 수정 후 redirect 요청처리 메소드

	@PostMapping("/{itemId}/edit")
	public String edit( @PathVariable Long id , @ModelAttribute Item item) {
		
		itemRepository.update(id, item);
		
		return "redirect:/basic/items/{itemId}";
	}

editForm 에서 할당받은 사용자의 데이터를
item Repository 를 통해 update(수정) 시킨 후

redirect 방식으로
items.html 에 적용시킨다.

2-2. item 수정 Repository 메소드

	public void update(Long itemId , Item updateParam) {
		
		// 수정할 아이템 id 를 조회 
		Item findItem = findById(itemId);
		
		// 조회된 id 의 값의 모든 정보를 사용자가 입력한 정보로 수정(=update) 
		findItem.setItemName(updateParam.getItemName());
		findItem.setPrice(updateParam.getPrice());
		findItem.setQuantity(updateParam.getQuantity());
		
		findItem.setOpen(updateParam.getOpen());
		findItem.setRegions(updateParam.getRegions());
		findItem.setItemType(updateParam.getItemType());
		findItem.setDeliveryCode(updateParam.getDeliveryCode());
	}

코드 보기 - GitHub

링크텍스트

profile
Hyobin12

0개의 댓글