UploadUtil 클래스
먼저, imgVO를 선언과 동시에 null로 생성을 해주었다.
그래서 첨부가 안돼면 null로 리턴이 된다. 첨부가 됐을 때 객체를 만들어 줄것이다.
파일 업로드가 되고 나면, 첨부에 문제가 되지 않았을 때, try문에 내가 첨부하고자 하는 orginfilename 파일명을 imgVO에 넣어줬다. 원본 파일명도 넣어줄 것이다.
AdminController
상품하나는 이미지 여러개를 가질 수 있다.
admin-mapper
foreach문의 item ="img" 여기서 img는 imgVO를 의미한다.
select의 서브 쿼리 조회는 IMG_CODE를 의미한다. EX) IMG_001 ... IMG_002 ... 와 같은 형태로 나타난다.
위에서 imgList를 변수로 추가해줬기 때문에 collection = "imgList" 는 itemVO.getImgList() 호출한다.
AdminService, AdminServiceImpl
AdminController
하지만, 이렇게 쿼리를 완성하면 등록 버튼 한번에 쿼리를 두번 실행하면서 중복이 발생하는 경우가 있다.
이 문제점을 제거하기 위해서 쿼리를 하나로 합쳐줘야한다.
AdminServiceImpl
이 두개는 별개의 기능으로 돌고 있다는 것이다.
하나의 등록으로 만들어 줘야한다.
상품 이미지 정보 등록에서 작성한 쿼리를 상품 등록 쿼리문에 복사 붙여넣기 해준다.
두개 쿼리 실행 다 잘돼야 실행해줘, 아니면 롤백해줘 어노테이션.
@Transactional : 해당 메소드 내의 쿼리 실행은 트랜젝션 처리
rollbackFor : 언제 롤백할꺼냐?(어떤 오류가 발생하면 롤백?)
Exception : 모든 예외 상황. 즉, 어떤 오류가 발생하면 걍 롤백해줘.
이후 Service 패키지에서 사용했던 상품 이미지 등록 쿼리문을 지워주면 된다. 인터페이스와 클래스 모두 삭제
AdminController
이후 상품 이미지 등록을 적용시켰던 쿼리를 삭제해주고, 상품 등록 쿼리를 맨 마지막으로 끌어 내려와주면 완성이다.
이미지를 등록 시키고, 아이템 등록 버튼을 누르면 문제없이 상품 등록과 상품 이미지 등록이 모두 잘 들어간 것을 볼 수 있다.
'✨ Back-end > Spring-Boot' 카테고리의 다른 글
[Spring] 쇼핑몰 - 23 등록된 상품 수정 (0) | 2023.03.31 |
---|---|
[Spring] 쇼핑몰 - 22 등록된 상품 관리 조회(SELECT) (0) | 2023.03.30 |
[Spring] 쇼핑몰 - 20 상품 이미지 등록 UploadUtil 클래스 (0) | 2023.03.30 |
[Spring] 쇼핑몰 - 19 상품 이미지 등록 SubImg 하드코딩 (0) | 2023.03.30 |
[Spring] 쇼핑몰 - 18 상품 이미지 등록 MainImg 하드코딩 (0) | 2023.03.30 |
댓글