쇼핑몰 개발 - spring boot + thymeleaf (1일차)

2022. 8. 16. 20:42프로젝트/Spring Project

#1일차 - Item

Entity 작성

Item Entity

상품 엔티티는 상품id, 이름, 상세설명, 가격, 수량, 판매 상태, 카테고리로 컬럼을 만듬.

Item Entity - Builder

엔티티에는 setter를 사용하면 안된다. 그래서 그 대안으로 빌더 패턴을 사용한다.

빌더 패턴으로 만들다가 값을 따로 따로 넣어줄 상황이 생긴다. 그때 빌더 어노테이션에 toBuilder를 사용하여 초기에 빌더 패턴을 만들고 그 후에 추가 하고 싶을 때 새로 하나 생성하여 기존 값을 복사해 넣고 추가 하고 싶은 값을 추가한다.

 

Item Entity - 재고 수량 감소 메소드

사용자가 주문을 했을때 주문한 수량만큼 재고 감소를 해주는 메소드이다.

 

Item Entity -  재고 수량 증가 메소드

위와 반대로 주문을 취소했을때 다시 그 수량만큼 재고에 더해주는 메소드이다.

 

Item Entity - update메소드

상품 업데이트 사용하는 메소드이다. Dto인 ItemFormDto2를 파라미터로 데이터를 넘겨준다.

ItemFormDto2

상품 등록 창에서 itemFormDto2를 사용하여 데이터를 받는다.

itemImgDtoList, itemImgIds 리스트는 상품 이미지와 이미지 id를 받는 용도로 만들었다.

itemFormDto2

ModelMapper를 사용하여 itemFormDto2를 item클래스 형태로 변환해준다.

위 createItem메소드 밑에 modelMapper를 설정해줄수도 있다.

밑에 of메소드는 item메소드를 itemFormDto2클래스 형태로 변환해준다.

ItemRepository

JPA사용하고 Querydsl도 사용한다.

querydsl 사용하기 위해 querydsl-apt, jpa 설치.

메인화면과 관리자페이지에 페이지로 뿌려지기 위해 ItemRepositoryCustrom 사용

@Param으로 itemNm을 받아 상품 이름으로 정보를 받아오는 sql

 

그리고 변수명을 읽으면 그 용도가 무엇인지 알수있다.

 

querydsl 설정방법은 https://velog.io/@mooh2jj/QueryDSL%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

 

 

QueryDSL이란? 설정방법

JPQL 예시코드Spring Data JPA가 기본적으로 제공해주는 CRUD 메서드 및 쿼리 메서드 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 됩니다. 간단한 로

velog.io

ItemRepositoryCustom

위에 언급했던 페이지로 뿌려지기 위해 만든 인터페이스.

ItemSearchRequestDto

검색 기능을 사용하기 위해 만듬.

검색날짜, 판매상태, 어떤 걸로 검색할지, 검색쿼리를 받도록 함.

ItemRepositoryCustomImpl

Impl을 꼭 붙여줘야 작동한다고 함.

booleanExpression으로 좀 더 직관적으로 보여줌.

판매 상태와, 1일, 1주, 1달, 6달로 시간에따라 가져옴.

관리자 아이템 페이지에 페이지로 뿌려주기 위해 작성.

sql이 아니라 자바 코드로 작성을 할 수 있어 편하고 좋음.

비슷한 형태로 메인 아이템 페이지도 작성.

 

@NotBlank 를 사용하려는데 라이브러리가 없어 찾아보니 spring stater web에 없으니 따로 implement하라고 한다. 

 

1인 개발이다 보니 프론트도 혼자 해야하는데 이쪽엔 감각이 1도 없어 전에 공부했던 책에 나와있는 예제를 가지고 와 사용.