@Repository
public interface ProductRepository extends JpaRepository<Product, String>, ProductRepositoryCustom {

    // (1) 상품 번호(prefix)로 시작하는 상품 조회
    List<Product> findByProdNoStartingWith(String select);

    // (2) 상품 번호로 단일 상품 조회
    Optional<Product> findByProdNo(String prodNo);

    // (3) 특정 서브카테고리의 모든 상품 조회
    List<Product> findBySubCategory(SubCategory subCategory);

    // (4) 할인율 높은 순 Top 8 상품 조회
    List<Product> findTop8ByOrderByProdDiscountDesc();

    // (5) 조회수 높은 순 Top 8 상품 조회
    List<Product> findTop8ByOrderByHitDesc();

    // (6) 리뷰 수 많은 순 Top 8 상품 조회
    List<Product> findTop8ByOrderByReviewCountDesc();

    // (7) 판매량 높은 순 Top 5 상품 조회
    List<Product> findTop5ByOrderByProdSoldDesc();

    // (8) 평점 높은 순 Top 8 상품 조회
    List<Product> findTop8ByOrderByRatingTotalDesc();

    // (9) 최근 등록 순 Top 8 상품 조회
    List<Product> findTop8ByOrderByRegDateDesc();

    // (10) QueryDSL BooleanBuilder 조건에 따른 모든 상품 조회
    List<Product> findAll(BooleanBuilder builder);
}

메서드별 간략 설명

  1. findByProdNoStartingWith(String select)
  2. findByProdNo(String prodNo)
  3. findBySubCategory(SubCategory subCategory)
  4. findTop8ByOrderByProdDiscountDesc()
  5. findTop8ByOrderByHitDesc()
  6. findTop8ByOrderByReviewCountDesc()
  7. findTop5ByOrderByProdSoldDesc()
  8. findTop8ByOrderByRatingTotalDesc()
  9. findTop8ByOrderByRegDateDesc()
  10. findAll(BooleanBuilder builder)