


장바구니 담기했을떄 수량만 변하게 하는중입니다.
public class CartService {
private final CartRepository cartRepository;
public void addToCart(Cart cart){
// save, update ?
int count = cartRepository.cartCount(cart);
if(count>0){
//update
}else {
cartRepository.save(cart);
}
}
수량업데이트 메서드르 만들어줘야합니다.
중복은 하지않고 수량만 업데이트입니다.
cartMapper
<select id="cartCount" resultType="int" parameterType="kr.smhrd.entity.Cart">
select count(*) from cart c
where c.customer_id = 1 and c.book_id=6
</select>
<update id="cartQuantity" parameterType="kr.smhrd.entity.Cart">
update cart set quantity=quantity+#{quantity}
where customer_id=#{customer_id} and book_id=#{book_id}
</update>

고유 id 있으니 4 update치면 되니 고유id 좋습니다.

변경되면 업데이트됩니다.
위에 스크립트 짭니다.

반복하게됩니다.
id="cartNumber" 고유하게만들어야합니다.
hidden은 참조하려고 히든

인덱스뿌릴때
<tbody>
<c:set var="totalAmount" value="0"/>
<c:if test="${!empty cartList}">
<c:forEach var="cart" items="${cartList}" varStatus="status">
<c:set var="totalAmount" value="${totalAmount+(cart.quantity*cart.price)}"/>
<tr>
<td>${cart.book_id}</td>
<td>${cart.title}</td>
<td>
<input type="number" onchange="quantityUpdate(${status.index})" id="cartNumber${status.index} " min="1" class="form-control" value="${cart.quantity}"/>
<input type="hidden" id="cartId${status.index}" value="cart.id" />
</td>
<td>${cart.price}</td>
<td>${cart.quantity*cart.price}</td>
<td><a href="/s01/removeCart/${cart.id}/${cart.customer_id}" class= "btn btn-sm btn-warning">취소</a></td>
</tr>
</c:forEach>
</c:if>
<c:if test="${empty cartList}">
<tr>
<td colspan="5">장바구니가 비었습니다.</td>
</tr>
</c:if>
</tbody>
<script>
function quantityUpdate(index) {
// cart.id와 quantity를 로그로 확인
let quantity = document.getElementById("cartNumber" + index).value;
let cart_id = document.getElementById("cartId" + index).value;
console.log(quantity, cart_id);
// 이후 필요한 처리를 이곳에 추가하면 됩니다.
document.getElementById("quantity").value=quantity;
document.getElementById("cart_id").value=cart_id;
}
</script>
</head>
<body>
<form action="/s01/cartQuantityUpdate" method="post">
<input type="hidden" id="quantity" name="quantity"/>
<input type="hidden" id="cart_id" name="cart_id"/>
<input type="hidden" id="customer_id" name="customer_id" value="${cus.id}"/>
name이 넘어갑니다.
수량, 아이디

서버로 날립니다. name으로 갑니다.
수량, 장바구니아이디, 커스터머아이디
카트리스트로 되돌아올때는 커스터머아이디
모든 페이지가 비연결지향이라
세션쓰고 그래서 연관성 있게끔합니다.
보낼때는 name으로 id



뭘로 받냐에 따라서 다릅니다.
