본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 21 상품 이미지 등록 쿼리

by 환풍 2023. 3. 30.
728x90
반응형

 

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

이후 상품 이미지 등록을 적용시켰던 쿼리를 삭제해주고, 상품 등록 쿼리를 맨 마지막으로 끌어 내려와주면 완성이다.

 

 

이미지를 등록 시키고, 아이템 등록 버튼을 누르면 문제없이 상품 등록과 상품 이미지 등록이 모두 잘 들어간 것을 볼 수 있다.

728x90
반응형

댓글