public interface ProductRepositoryCustom {
List<Product> findAll(BooleanBuilder builder);
Page<Tuple> selectBestAllForList(int subCate);
Page<Tuple> sortedProducts(PageRequestDTO pageRequestDTO, Pageable pageable);
Page<Tuple> sortedSearchProducts(PageRequestDTO pageRequestDTO, Pageable pageable);
Page<Tuple> selectAllForListByRole(PageRequestDTO pageRequestDTO, Pageable pageable);
}
메서드별 간단 설명
findAll(BooleanBuilder builder)
- 용도: QueryDSL
BooleanBuilder에 조합된 조건으로 모든 상품 조회
- 반환: 조건을 만족하는
List<Product>
selectBestAllForList(int subCate)
- 용도: 지정 서브카테고리에서 최근 3개월 판매량 Top 10 상품 조회
- 반환:
(상품, 판매자명, 이미지) 정보를 담은 Page<Tuple> (페이징 정보 포함)
sortedProducts(PageRequestDTO pageRequestDTO, Pageable pageable)
- 용도: 카테고리·정렬·기간 필터를 적용해 페이징된 상품 목록 조회
- 정렬 예시: 낮은가격, 높은가격, 평점순, 리뷰순, 최신순
- 반환:
(상품, 판매자명, 판매자등급, 이미지) 정보를 담은 Page<Tuple>
sortedSearchProducts(PageRequestDTO pageRequestDTO, Pageable pageable)
- 용도: 키워드(상품명/브랜드) 검색 + 3번 메서드와 같은 정렬·필터·페이징
- 반환:
(상품, 판매자명, 판매자등급, 이미지) 정보를 담은 Page<Tuple>
selectAllForListByRole(PageRequestDTO pageRequestDTO, Pageable pageable)
- 용도: 관리자면 모든 상품, 일반 사용자면
state = "판매"인 상품만 조회
- 반환:
(상품, 판매자명, 판매자등급, 이미지) 정보를 담은 Page<Tuple>