장바구니 조회
사용자의 장바구니를 클릭하면 장바구니에 담아뒀던 CartItem과 ItemImg의 정보를 조회하도록 하겠습니다.
먼저 화면에 보낼 DTO 객체를 생성합니다.
DTO
CartDetailDto.Java
public class CartDetailDto {
private Long cartItemId;
private String itemNm;
private int price;
private int count;
private String imgUrl;
...
Repository
CartItemRepository.Java
QueryDsl에 한번에 DTO 객체를 반환하는 것 말고도 JPQL의 쿼리문을 통해서 한번에 조회할 수 있습니다.
CartItem과 ItemImg 내부에 item이 모두 존재하니, Item을 join 하고 조건문에 이를 활용합니다.
@Query("select new com.growing.shop.dto.CartDetailDto(ci.id, i.itemNm, i.price, ci.count, im.imgUrl)"+
"from CartItem ci, ItemImg im " +
"join ci.item i " +
"where ci.cart.id = :cartId " +
"and im.item.id = ci.item.id " +
"and im.repImgYn = 'Y' " +
"order by ci.regTime desc")
List<CartDetailDto> findCartDetailDtoList(Long cartId);
Service
CartService.Java
email 정보만 받고 member 엔티티를 조회합니다. member 엔티티의 id를 통해서 Cart를 가져온 뒤, 바로 위에 만들어놨던 Repository의 메서드를 사용해서 DTO 객체를 조회 후 반환 해줍니다.
@Transactional(readOnly = true)
public List<CartDetailDto> getCartList(String email){
List<CartDetailDto> cartDetailDtoList = new ArrayList<>();
Member member = memberRepository.findByEmail(email);
Cart cart = cartRepository.findByMemberId(member.getId());
if(cart == null){
return cartDetailDtoList;
}
cartDetailDtoList= cartItemRepository.findCartDetailDtoList(cart.getId());
return cartDetailDtoList;
}
Controller
CartController.Java
@GetMapping("/cart")
public String orderHist(Principal principal, Model model){
List<CartDetailDto> cartDetailList= cartService.getCartList(principal.getName());
model.addAttribute("cartItems", cartDetailList);
return "cart/cartList";
}
Author And Source
이 문제에 관하여(장바구니 조회), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@simgyuhwan/장바구니-조회저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)