2022. 8. 16. 20:42ㆍ프로젝트/Spring Project
#1일차 - Item
Entity 작성
상품 엔티티는 상품id, 이름, 상세설명, 가격, 수량, 판매 상태, 카테고리로 컬럼을 만듬.
엔티티에는 setter를 사용하면 안된다. 그래서 그 대안으로 빌더 패턴을 사용한다.
빌더 패턴으로 만들다가 값을 따로 따로 넣어줄 상황이 생긴다. 그때 빌더 어노테이션에 toBuilder를 사용하여 초기에 빌더 패턴을 만들고 그 후에 추가 하고 싶을 때 새로 하나 생성하여 기존 값을 복사해 넣고 추가 하고 싶은 값을 추가한다.
사용자가 주문을 했을때 주문한 수량만큼 재고 감소를 해주는 메소드이다.
위와 반대로 주문을 취소했을때 다시 그 수량만큼 재고에 더해주는 메소드이다.
상품 업데이트 사용하는 메소드이다. Dto인 ItemFormDto2를 파라미터로 데이터를 넘겨준다.
상품 등록 창에서 itemFormDto2를 사용하여 데이터를 받는다.
itemImgDtoList, itemImgIds 리스트는 상품 이미지와 이미지 id를 받는 용도로 만들었다.
ModelMapper를 사용하여 itemFormDto2를 item클래스 형태로 변환해준다.
위 createItem메소드 밑에 modelMapper를 설정해줄수도 있다.
밑에 of메소드는 item메소드를 itemFormDto2클래스 형태로 변환해준다.
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
위에 언급했던 페이지로 뿌려지기 위해 만든 인터페이스.
검색 기능을 사용하기 위해 만듬.
검색날짜, 판매상태, 어떤 걸로 검색할지, 검색쿼리를 받도록 함.
Impl을 꼭 붙여줘야 작동한다고 함.
booleanExpression으로 좀 더 직관적으로 보여줌.
판매 상태와, 1일, 1주, 1달, 6달로 시간에따라 가져옴.
관리자 아이템 페이지에 페이지로 뿌려주기 위해 작성.
sql이 아니라 자바 코드로 작성을 할 수 있어 편하고 좋음.
비슷한 형태로 메인 아이템 페이지도 작성.
@NotBlank 를 사용하려는데 라이브러리가 없어 찾아보니 spring stater web에 없으니 따로 implement하라고 한다.
1인 개발이다 보니 프론트도 혼자 해야하는데 이쪽엔 감각이 1도 없어 전에 공부했던 책에 나와있는 예제를 가지고 와 사용.
'프로젝트 > Spring Project' 카테고리의 다른 글
RiotAPI + 내전 팀 추천 알고리즘 (1) | 2022.09.29 |
---|---|
Riot API + Spring + JSON (0) | 2022.09.22 |
쇼핑몰 개발 - spring boot + thymeleaf (4일차) (0) | 2022.09.01 |
쇼핑몰 개발 - spring boot + thymeleaf (3일차) (2) | 2022.09.01 |
쇼핑몰 개발 - spring boot + thymeleaf (2일차) (0) | 2022.09.01 |