이번엔 사용자 계정에 있는 장바구니 목록 리스트를 조회하는 것을 만들어보았다.
CartVO
cartVO에 상품 정보를 담기 위해서 itemVO가 필요해서 VO에 ItemVO 객체를 넣어주었다.
이렇게 하면 CartVO에서 ItemVO를 get하여 호출할 수 있다.
cart-mapper.xml
Association
Association은 has one 관계를 설정할 수 있다.
즉, Cart- Item은 1 - N 관계이다. 아이템 입장에서 장바구니는 하나만 존재한다.
따라서, MyBatis 내 resultMap 내부에서 association을 활용해 데이터를 가져올 수 있다.
AttachedFileName은 ITEM_IMG에서 끌어온다.
총 가격은 ITEM_PRICE * CART_CNT AS TOTAL_PRICE 을 사용했다.
CartVO는 이미 itemVO에 연결되어 있는데,
itemVO는 또 imgVO로 연결되어 있기 때문에, 쿼리문에있는 ATTACHED_FILE_NAME을 가져올 수 있는 것이다.
TOTAL_PRICE는 어쩔수 없이 resultMap에 추가해줘야한다.
cart-mapper , CartVO
resultMap에 만들어주고, VO에도 추가해줬다.
CartService 인터페이스, 클래스
매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성)
매개변수 : 쿼리 실행 시 빈 값을 채울 용도
1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음
2. 채워줄 값이 하나일 경우
2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나
2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나
3. 채워줄 값이 여러개인 경우 : 매개변수는 VO 객체.
리턴타입 : 쿼리 실행 결과를 어떻게 받아올지에 대한 정의
INSERT, UPDATE, DELETE 쿼리 실행 결과는
리턴타입을 int 혹은 void 사용하면됨. int로 받을 땐 return 필요o void는 필요x
SELECT 쿼리 결과의 리턴타입은 크게 두 가지로 나뉨.
조회결과 데이터가 무조건 한줄만 조회 : VO 객체.
조회 결과 데이터가 0줄이상 가변적일 경우 : List<VO> 객체.
CartController 컨트롤러
컨트롤러에서는 장바구니 페이지로 이동하면서 login 정보를 담아가야 해당 사용자 개인의 장바구니로 이동한다.
따라서, session에 담긴 loginInfo 데이터를 장바구니에서 조회한 장바구니 목록 조회 쿼리문에 memId를 넣어준다.
이 데이터를 넣기 위해선 model이라는 객체도 필요해서 함께 매개변수로 넣어주었다.
cart.html
컨트롤러에서 cartList라는 이름으로 넘겨주었고, html에서 cart라는 이름으로 반복을 돌렸다.
여기서 아이템 이미지는 CartVO 안에 있는 itemVO의 객체에 담긴 itemName을 뽑아줘야하므로,
$[[cart.itemVO.itemName]]으로 이미지를 뽑을 수 있다.
위 코드까지 마무리한 html 화면.
CartController 컨트롤러
장바구니 상품 목록 리스트 아래에 구매 버튼과 삭제 버튼을 추가했고, 총 구매 금액을 표시해보았다.
div class="offset-10 col-1">d</div>
offset-10은 총 12칸중 10칸은 띄우고 시작하겠다는 의미이다.
컨트롤러에서 cartService 쿼리를 바로 model에 넣어준 것을 뺀 뒤 cartList 변수에 저장한 다음 준 다음,
아래에 총 구매 금액 계산 변수를 cartList 값에 추가해주고 html에서 빼서 사용할 수 있게 해주었다.
이렇게 총 구매금액까지 html에 조회한 결과를 나타내보았다.
다음 포스팅에서는 중복된 상품들이 하나로 계속 조회가 되는데, 이를 합쳐보는 기능을 구현해보자.
'✨ Back-end > Spring-Boot' 카테고리의 다른 글
[Spring] 쇼핑몰 - 35 장바구니 상품 수량 수정(UPDATE) (0) | 2023.04.06 |
---|---|
[Spring] 쇼핑몰 - 34 장바구니 상품 중첩하기(MERGE INTO) (0) | 2023.04.06 |
[Spring] 쇼핑몰 - 32 사용자 계정에서 목록 조회 Interceptor (0) | 2023.04.05 |
[Spring] 쇼핑몰 - 31 이전 페이지 HttpServletRequest (0) | 2023.04.04 |
[Spring] 쇼핑몰 - 30 장바구니 (0) | 2023.04.04 |
댓글