@Repository
public interface CartRepository extends JpaRepository<Cart, Integer> {
void deleteByCartNo(int cartNo);
Optional<Cart> findByCartNo(int cartNo);
List<Cart> findAllByUser(User user);
@Query("SELECT c FROM Cart c WHERE c.user.uid = :uid AND c.product.prodNo = :prodNo " +
"AND c.opt1 = :opt1 AND c.opt1Cont = :opt1Cont " +
"AND c.opt2 = :opt2 AND c.opt2Cont = :opt2Cont " +
"AND c.opt3 = :opt3 AND c.opt3Cont = :opt3Cont " +
"AND c.opt4 = :opt4 AND c.opt4Cont = :opt4Cont " +
"AND c.opt5 = :opt5 AND c.opt5Cont = :opt5Cont " +
"AND c.opt6 = :opt6 AND c.opt6Cont = :opt6Cont")
Optional<Cart> findByUserAndProductAndOptions(
@Param("uid") String uid,
@Param("prodNo") String prodNo,
@Param("opt1") String opt1, @Param("opt1Cont") String opt1Cont,
@Param("opt2") String opt2, @Param("opt2Cont") String opt2Cont,
@Param("opt3") String opt3, @Param("opt3Cont") String opt3Cont,
@Param("opt4") String opt4, @Param("opt4Cont") String opt4Cont,
@Param("opt5") String opt5, @Param("opt5Cont") String opt5Cont,
@Param("opt6") String opt6, @Param("opt6Cont") String opt6Cont
);
}
기능 설명
extends JpaRepository<Cart, Integer>
Cart엔티티를 대상으로 기본 CRUD 메서드(JPA 제공)를 사용할 수 있도록 상속- 기본 키 타입은
Integer
deleteByCartNovoid deleteByCartNo(int cartNo);
- 기능: 주어진
cartNo(장바구니 번호)에 해당하는 행을 바로 삭제- 파라미터
int cartNo: 삭제할 장바구니 항목의 고유 식별자- 반환값: 없음(삭제 성공 시 해당 엔티티 제거, 실패 시 예외 발생)
findByCartNoOptional<Cart> findByCartNo(int cartNo);
- 기능: 특정
cartNo를 가진Cart엔티티를 조회- 파라미터
int cartNo: 조회할 장바구니 항목의 고유 식별자- 반환값:
Optional<Cart>: 존재하면Cart객체가, 없으면 빈 Optional 반환
findAllByUserList<Cart> findAllByUser(User user);
- 기능: 특정 사용자(
User user)의 모든 장바구니 항목 목록을 조회- 파라미터
User user: 조회 대상 사용자 엔티티- 반환값:
List<Cart>: 해당 사용자가 담은 모든Cart리스트 반환
findByUserAndProductAndOptions@Query("SELECT c FROM Cart c WHERE c.user.uid = :uid AND c.product.prodNo = :prodNo " + "AND c.opt1 = :opt1 AND c.opt1Cont = :opt1Cont " + "AND c.opt2 = :opt2 AND c.opt2Cont = :opt2Cont " + "AND c.opt3 = :opt3 AND c.opt3Cont = :opt3Cont " + "AND c.opt4 = :opt4 AND c.opt4Cont = :opt4Cont " + "AND c.opt5 = :opt5 AND c.opt5Cont = :opt5Cont " + "AND c.opt6 = :opt6 AND c.opt6Cont = :opt6Cont") Optional<Cart> findByUserAndProductAndOptions( @Param("uid") String uid, @Param("prodNo") String prodNo, @Param("opt1") String opt1, @Param("opt1Cont") String opt1Cont, @Param("opt2") String opt2, @Param("opt2Cont") String opt2Cont, @Param("opt3") String opt3, @Param("opt3Cont") String opt3Cont, @Param("opt4") String opt4, @Param("opt4Cont") String opt4Cont, @Param("opt5") String opt5, @Param("opt5Cont") String opt5Cont, @Param("opt6") String opt6, @Param("opt6Cont") String opt6Cont );
- 기능:
- 로그인한 사용자 ID(
uid)- 상품 번호(
prodNo)- 옵션명(
opt1opt6)및 옵션값(opt1Contopt6Cont)이 정확히 일치하는 장바구니 항목을 조회- 파라미터
String uid: 사용자 고유 IDString prodNo: 상품 고유 번호String optX,String optXCont: 1~6번 옵션명과 각각의 선택값- 반환값:
Optional<Cart>: 조건에 일치하는 장바구니 항목이 있으면 반환, 없으면 빈 Optional- 상세 설명:
- 사용자가 동일 상품에 똑같은 옵션 조합을 중복으로 담았는지 확인하기 위해 사용
- 조회된
Cart가 존재하면 수량만 누적 업데이트하고, 없으면 새로 엔티티 생성