2023. 4. 7. 21:35ใSpring
์ฅ๋ฐ๊ตฌ๋ ์ํ ๋ฑ๋ก ์ ์ค๋ณต ์ํ ์๋ ์ฆ๊ฐ, ์ํ ์์ผ๋ฉด ํด๋น ์ํ ๋ฑ๋ก.
์ฅ๋ฐ๊ตฌ๋ ์ํ ๋ฑ๋ก ์ฟผ๋ฆฌ ์์
MERGE INTO ์ด์ฉ
์ด๋ค ํ์์ ์ฅ๋ฐ๊ตฌ๋์ ํด๋น ์ํ์ด ์๋์ง ์๋์ง ํ์ธ
WHEN MATCHED THEN
ํด๋น ์ํ์ itemCode๊ฐ ํ์ฌ ์ฅ๋ฐ๊ตฌ๋์ ์๋ itemCode์ ์ผ์น
๋ก๊ทธ์ธ๋ ํ์์ memId์ ํด๋น ์ํ์ด ๋ด๊ธด ํ์์ memId๊ฐ ์ผ์น
>> UPDATE ์ฟผ๋ฆฌ ์คํํ์ฌ ์ฅ๋ฐ๊ตฌ๋์ ์๋ cartCnt ์ฆ๊ฐ
WHEN NOT MATCHED THEN
์ ๋๊ฐ์ง ์กฐ๊ฑด์ด ์ผ์นํ์ง ์๋ ๊ฒฝ์ฐ
>>ํด๋น ์ํ ์ฅ๋ฐ๊ตฌ๋์ INSERT ์ฟผ๋ฆฌ ์คํํ์ฌ ๋ด๊ธฐ.
์ต์ข ์ฅ๋ฐ๊ตฌ๋ ์ํ ๋ฑ๋ก ์ฟผ๋ฆฌ
๊ธฐ์กด์ ์ฅ๋ฐ๊ตฌ๋ ๋ฑ๋ก ์ฟผ๋ฆฌ ์ค INSERT INTO SHOP_CART์์ INTO SHOP_CART๋ ์ง์์ค์ผ ํจ.
<!-- ์ฅ๋ฐ๊ตฌ๋ ๋ฑ๋ก -->
<insert id="regCart">
MERGE INTO SHOP_CART
USING DUAL
ON (ITEM_CODE = #{itemCode} AND MEM_ID = #{memId})
WHEN MATCHED THEN
UPDATE
SET
CART_CNT = CART_CNT + #{cartCnt}
WHERE ITEM_CODE = #{itemCode}
AND MEM_ID = #{memId}
WHEN NOT MATCHED THEN
INSERT (
CART_CODE
, ITEM_CODE
, MEM_ID
, CART_CNT
) VALUES(
(SELECT 'CART_'||LPAD(NVL(MAX(TO_NUMBER(SUBSTR(CART_CODE, 6))), 0) + 1, 3, '0')
FROM SHOP_CART)
, #{itemCode}
, #{memId}
, #{cartCnt}
)
</insert>
์ฅ๋ฐ๊ตฌ๋ ์ํ ์๋ ๋ณ๊ฒฝ ๊ธฐ๋ฅ
์ฅ๋ฐ๊ตฌ๋ ์ํ ์๋ ์์ ์ฟผ๋ฆฌ ์์ฑ
์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ํด๋น ์ํ์ ์๋ ๋ณ๊ฒฝํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ cartCode ํ์
<!-- ์ฅ๋ฐ๊ตฌ๋ ์๋ ์์ -->
<update id="updateCartCnt">
UPDATE SHOP_CART
SET
CART_CNT = #{cartCnt}
WHERE CART_CODE = #{cartCode}
</update>
CartService ๋ฉ์๋ ์์ฑ
//์ฅ๋ฐ๊ตฌ๋ ์๋ ์์ ๋ฒํผ ํด๋ฆญ
void updateCartCnt(CartVO cartVO);
CartServiceImpl ๋ฉ์๋ ๊ตฌํ
//์ฅ๋ฐ๊ตฌ๋ ์๋ ์์ ๋ฒํผ
@Override
public void updateCartCnt(CartVO cartVO) {
sqlSession.update("cartMapper.updateCartCnt", cartVO);
}
cart_list.html์์ for๋ฌธ ๋๋ฉด์ ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก ๋ฟ๋ ค์ฃผ๋ ์์ญ์ form ํ๊ทธ๋ก ๊ฐ์ธ์ค.
> ๋ณ๊ฒฝ๋ ์๋ ๋ฐ์ดํฐ ๋ฐ์๊ฐ๊ธฐ ์ํจ.
form ํ๊ทธ ์์ฑ ์์ฑ
๋ฐ์ดํฐ ๋ฐ์๊ฐ๊ธฐ ์ํด ์์ ๋ฒํผ์ submit์ผ๋ก!
์๋ ๋ณ๊ฒฝํ ํด๋น ์ํ์ ์๋์ด ๋ณ๊ฒฝ๋์ด์ผ ํจ.
> cartCode๋ฅผ input hidden ์์ฑ์ผ๋ก ๋ฐ์ดํฐ ๋๊ฒจ์ ์ฟผ๋ฆฌ ๋น ๊ฐ์ ์ฑ์์ค.
<form th:action="@{/cart/updateCartCnt}" method="post">
<input type="hidden" name="cartCode" th:value="${cart.cartCode}">
<td>
<div class="row">
<div class="col-7">
<input name="cartCnt" type="number" class="form-control" min="1" th:value="${cart.cartCnt}">
</div>
<div class="col-5 d-grid">
<input type="submit" class="btn btn-secondary" value="์์ ">
</div>
</div>
</td>
</form>
CartController ์์ฑ
//์ฅ๋ฐ๊ตฌ๋ ์๋ ์์
@PostMapping("/updateCartCnt")
public String updateCartCnt(CartVO cartVO) {
cartService.updateCartCnt(cartVO);
return "redirect:/cart/cartList";
}
์ฅ๋ฐ๊ตฌ๋ ์ญ์ ๋ฒํผ ๊ธฐ๋ฅ ๊ตฌํ
ํด๋น ์ํ์ ์ญ์ ๋ฒํผ ๋๋ฅด๋ฉด ์ํ ์ญ์
cart_list.html์ ์ญ์ ๋ฒํผ์ th:onclick ์์ฑ์ผ๋ก ์ฌ์ฉํ์ฌ js์ ์ญ์ ํจ์๋ก ์ด๋
ํด๋น ์ํ์ ์ญ์ ํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋งค๊ฐ๋ณ์๋ก cartCode ๋๊ฒจ์ฃผ๊ธฐ
<div class="row">
<div class="col d-grid">
<input type="button" class="btn btn-secondary" value="์ญ์ " th:onclick="deleteCart([[${cart.cartCode}]]);">
</div>
cart_list.js ์์ฑ
์ํ ์ญ์ ํจ์ ์์ฑ.
์ญ์ ์ confirm ์ฐฝ์ผ๋ก ํ์ธ ์ฐฝ ๋์์ฃผ๊ธฐ.
ํ์ธ ๋๋ฅด๋ฉด cartCode๊ฐ์ง๊ณ controller๋ก ์ด๋
//์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์
function deleteCart(cartCode){
const result = confirm('์ฅ๋ฐ๊ตฌ๋์์ ์ญ์ ํ์๊ฒ ์ต๋๊น?');
if(result){
location.href = `/cart/deleteCart?cartCode=${cartCode}`;
}
}
CartController ์์ฑ
//์ฅ๋ฐ๊ตฌ๋ ์ญ์ ๋ฒํผ ํด๋ฆญ ์
@GetMapping("/deleteCart")
public String deleteCart(String cartCode) {
return "redirect:/cart/cartList";
}
์ํ ์ญ์ ์ฟผ๋ฆฌ ์์ฑ.
<!-- ์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์ ๋ฒํผ -->
<delete id="deleteCart">
DELETE SHOP_CART
WHERE CART_CODE = #{cartCode}
</delete>
CartService ๋ฉ์๋ ์์ฑ
//์ฅ๋ฐ๊ตฌ๋ ์ญ์ ๋ฒํผ ํด๋ฆญ
void deleteCart(String cartCode);
CartServiceImpl ๋ฉ์๋ ๊ตฌํ
//์ฅ๋ฐ๊ตฌ๋ ์ญ์ ๋ฒํผ
@Override
public void deleteCart(String cartCode) {
sqlSession.delete("cartMapper.deleteCart", cartCode);
}
CartController์์ ๋ฉ์๋ ์คํ
//์ฅ๋ฐ๊ตฌ๋ ์ญ์ ๋ฒํผ ํด๋ฆญ ์
@GetMapping("/deleteCart")
public String deleteCart(String cartCode) {
//์ฅ๋ฐ๊ตฌ๋ ์ํ ์ญ์ ๋ฒํผ ํด๋ฆญ
cartService.deleteCart(cartCode);
return "redirect:/cart/cartList";
}
์ฅ๋ฐ๊ตฌ๋ ์ํ ์ฒดํฌ๋ฐ์ค ์ปจํธ๋กค ๊ธฐ๋ฅ
ใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ ก์ ๋ฆฌ ๋ ๋ ค๋จน์ ๋ถ๋ถ
- ์ฒดํฌ๋ฐ์ค ๋ณ๊ฒฝ ์ ์ต์ข ๊ธ์ก ์๋ ๋ณ๊ฒฝ
ใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ กใ ก
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ผํ๋ชฐ ํ๋ก์ ํธ(12) ํ์ MY PAGE - ๊ตฌ๋งค ๋ด์ญ (0) | 2023.04.11 |
---|---|
์ผํ๋ชฐ ํ๋ก์ ํธ(11) ํ์ MY PAGE - ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก (3) ์ ํ ๊ตฌ๋งค (0) | 2023.04.11 |
json ๋ฐ์ดํฐ java๋ก ๋ณด๋ด๊ธฐ (0) | 2023.04.07 |
์ผํ๋ชฐ ํ๋ก์ ํธ(11) ํ์ MY PAGE - ์ฅ๋ฐ๊ตฌ๋ ๋ชฉ๋ก (0) | 2023.04.05 |
์ผํ๋ชฐ ํ๋ก์ ํธ(10) ์ฅ๋ฐ๊ตฌ๋ (0) | 2023.04.04 |