개집사의 개발새발

반응형

상품 관리 페이지

- 상품을 조회하는 조건 설정 후 페이징 기능을 통해 일정 개수의 상품만 불러오며, 선택한 상품 상세페이지로 이동할 수 있는 기능

 

조회 조건

- 상품 등록일

- 상품 판매 상태

- 상품명 또는 상품 등록자 아이디

 

상품 데이터 조회시 상품 조회 조건을 가지고 있는 ItemSearchDto 클래스 생성

package com.shop.dto;

import com.shop.constant.ItemSellStatus;
import lombok.Getter;
import lombok.Setter;

@Getter @Setter
public class ItemSearchDto {

    private String searchDateType;	// 1

    private ItemSellStatus searchSellStatus; // 2

    private String searchBy;	// 3

    private String searchQuery = "";	// 4
}

1. 현재 시간과 상품 등록일을 비교해서 상품 데이터를 조회

[조회 시간 기준]

all: 상품 등록일 전체

1d: 최근 하루동안 등록된 상품

1w: 최근 일주일동안 등록된 상품

1m: 최근 한달동안 등록된 상품

6m: 최근 6개월동안 등록된 상품

 

2. 상품의 판매상태를 기준으로 상품 데이터 조회

 

3. 상품을 조회할 때 어떤 유형으로 조회할지 선택

itemName: 상품명

createBy: 상품 등록자 아이디

 

4. 조회할 검색어 저장할 변수

searchBy가 itemName일 경우 상품명을 기준으로 검색하고,

createdBy일 경우 상품등록자 아이디 기준으로 검색

 

이후 Querydsl을 Spring Data Jpa와 함께 사용하기 위해 사용자 정의 리포지토리 정의하기

3단계의 과정으로 구현

1. 사용자 정의 인터페이스 작성

2. 사용자 정의 인터페이스 구현

3. Spring Data Jpa 리포지토리에서 사용자 정으 인터페이스 상속

 

1. 사용자 정의 인터페이스

ItemRepositoryCustom 생성

package com.shop.repository;

import com.shop.dto.ItemSearchDto;
import com.shop.entity.Item;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

public class ItemRepositoryCustom {

    Page<Item> getAdminItemPage(ItemSearchDto itemSearchDto, Pageable pageable);
}

상품 조회 조건을 담고 있는 itemSearchDto 객체와 페이징 정보를 담고 있는 pageable 객체를 파라미터로 받는 getAdminItemPage 메소드를 정의

반환 데이터로 Page<Item> 객체를 반환

 

2. 사용자 정의 인터페이스 구현하는 ItemRepositoryCustomImpl 클래스 작성

 

3. ItemRepository 인터페이스에서 ItemRepositoryCustom 인터페이스 상속

public interface ItemRepository extends JpaRepository<Item, Long>, QuerydslPredicateExecutor<Item>, ItemRepositoryCustom{

Querydsl로 구현한 상품 관리 페이지 목록을 불러오는 getAdminItemPage() 메소드 사용 가능

 

 

ItemService 클래스에 상품 조회 조건과 페이지 정보를 파라미터로 받아서 상품 데이터를 조회하는 getAdminItemPage() 메소드 추가

* 데이터 수정이 일어나지 않으므로 최적화를 위해 @Transactional(readOnly=true)어노테이션 설정

 

ItemController 클래스에 상품 관리 화면 이동 및 조회한 상품 데이터를 화면에 전달하는 로직 구현

페이지 번호는 0부터 시작하는 것에 유의함

반응형
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band