Spring.ver2

정재호·2024년 9월 11일



장바구니 담기했을떄 수량만 변하게 하는중입니다.

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


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

profile
성장하는 하루가 되자

0개의 댓글