코드 그라데이션
shop 구현 (12) 상품 상세 페이지 본문
상세페이지는 Item 하나만 보여주면 되는 것이니까 여러개 들고 올 필요 없이
ItemService
@Transactional(readOnly = true)
public ItemFormDto getItemDtl(Long itemId){
List<ItemImg> itemImgList = itemImgRepository.findByItemIdOrderByIdAsc(itemId);
// DB에서 데이터를 가지고 옵니다.
List<ItemImgDto> itemImgDtoList = new ArrayList<>();
for (ItemImg itemImg : itemImgList) {
ItemImgDto itemImgDto = ItemImgDto.of(itemImg);
itemImgDtoList.add(itemImgDto);
}
Item item = itemRepository.findById(itemId)
.orElseThrow(EntityNotFoundException::new);
ItemFormDto itemFormDto = ItemFormDto.of(item);
itemFormDto.setItemImgDtoList(itemImgDtoList);
return itemFormDto;
}
설정이 아이템 하나에 여러 이미지(7개)를 등록할 수 있었으므로
public ItemFormDto getItemDtl(Long itemId){
List<ItemImg> itemImgList
받아오는 아이디는 하난데, 리턴은 List로 해주는 것이다.
ItemImg도 하나의 엔티티기 때문에 그대로 리턴해줄 수가 없어서 Dto로 매번 매핑해주는 게 필요
for (ItemImg itemImg : itemImgList) {
ItemImgDto itemImgDto = ItemImgDto.of(itemImg);
itemImgDtoList.add(itemImgDto);
}
Item과 ItemImg를 묶어서 ItemFormDto에 넣는다.
// 아이템 이미지 가져오고
for (ItemImg itemImg : itemImgList) {
ItemImgDto itemImgDto = ItemImgDto.of(itemImg);
itemImgDtoList.add(itemImgDto);
}
// 아이템 가져와서
Item item = itemRepository.findById(itemId)
.orElseThrow(EntityNotFoundException::new);
// 둘을 ItemFormDto에 묶어주는 과
ItemFormDto itemFormDto = ItemFormDto.of(item);
itemFormDto.setItemImgDtoList(itemImgDtoList);
return itemFormDto;
Thymeleaf에서
T(~)는
Enum 같은 것을 쓸 때 자바 클래스를 명시해야 하는 경우가 있다.
패키지 경로까지 같이 묶어줘야 인식한다.
'Spring > SpringShop' 카테고리의 다른 글
shop 구현 (14) 주문 이력 조회 (0) | 2023.07.22 |
---|---|
shop 구현 (13) 주문 기능 구현 (0) | 2023.07.21 |
shop 구현 (11) 메인 페이지 만들기 (0) | 2023.07.19 |
shop 구현 (10) 상품 관리하기 페이지 (0) | 2023.07.15 |
shop 구현 (9) 특이한 상속구조 (0) | 2023.07.14 |