1. MainItemDto
2. @QueryProjection
3. 사용자 정의 인터페이스 리포지토리 생성
// MainItemDto 객체를 반환
// 멤버변수 초기화는 조회된 결과값에서 MainItemDto 객체 생성자를 통해 지정
// 즉, db 조회 결과는 itemImg-item 조인된 결과가 반환되지만 그 중 일부만 사용
.select(
new QMainItemDto(
item.id,
item.itemNm,
item.itemDetail,
itemImg.imgUrl,
item.price)
)
// itemImg 테이블의 item 필드가 참조하는 item 테이블 조인
.join(itemImg.item, item)
// 5개의 이미지중에서 대표사진만을 조회
.where(itemImg.repimgYn.eq("Y"))
4. Main Controller
5. Main Page
6. 상품 이미지 파일 불러오기 동작 원리
① src = "images/item/파일명" 으로 이미지 파일 요청
② WebConfigurer 에 지정된 핸들러대로 uploadPath 를 기준으로 요청 처리
③ "file:///Users/codren/study/item/상품명" 을 수행하여 일치하는 파일 반환