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

[Spring] 쇼핑몰 -4 카테고리 등록 중복체크

by 환풍 2023. 3. 27.
728x90

 

왼쪽과 같이 카테고리에 이미 등록된 상품을 같은 이름으로 등록하면 중복이 뜨게끔 기능을 구현하였다.

 


item-mapper.xml

먼저 item-mapper에서 카테고리 중복체크 select 쿼리문을 만들어주었다.

카테고리 이름을 가지고 조회된 개수를 뽑아내는 쿼리문으로, cateName이 같은 것의 개수를 주었다.

이때 resultType으로 int를 주었는데, 뽑아내는 결과값이 count 갯수 이므로 int로 나타내주었다.

AdminService 인터페이스

매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성)
매개변수 : 쿼리 실행 시 빈 값을 채울 용도
1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음
2. 채워줄 값이 하나일 경우
 2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나
2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나
3. 채워줄 값이 여러개인 경우 : 매개변수는 VO 객체.
리턴타입 : 쿼리 실행 결과를 어떻게 받아올지에 대한 정의
INSERT, UPDATE, DELETE 쿼리 실행 결과는
리턴타입을 int 혹은 void 사용하면됨. int로 받을 땐 return 필요o  void는 필요x
SELECT 쿼리 결과의 리턴타입은 크게 두 가지로 나뉨.
조회결과 데이터가 무조건 한줄만 조회 : VO 객체.
조회 결과 데이터가 0줄이상 가변적일 경우 : List<VO> 객체.

위 쿼리문에서 resultType을 int로 받아줬기 때문에, 나오는 결과 값이 한개이다.

따라서 일반적인 select문 처럼 VO나 List<VO>로 리턴받지 않고, void나 int로 리턴이 가능하다.

count는 숫자이므로 int형을 써서 나타내주었다.

 

AdminServiceImpl 클래스

쿼리문을 조회했을 때 나오는 결과값은 count 이므로 selectOne을 사용해서 쿼리를 리턴시켜준다.

AdminController 컨트롤러

위 컨트롤러에서 @ReponseBody는 ajax에서 보내주는 데이터를 받아오는 것이다.

따라서 checkCateName 경로를 가진 ajax로 가보자.

cate_manage.js

카테고리 등록 시 중복이름 확인 함수이다. cateName이라는 데이터를 가져와 사용하는 것인데, 이 데이터는 html에서 input 태그에서 가져온 데이터이다.

async : false를 주면서 ajax가 실행되고 return isDuplicate가 마지막에 실행되도록 바꾸었다.
ajax의 async에 대해서는 아래 링크에 좀 더 자세하게 풀어보았다.

 

 

이 함수는 addGood() 함수에서 사용이되고, addGood() 함수는 아래 html에서 버튼 클릭시 호출되는 함수이다.

count의 개수가 1으로, 같은 cateName 값을 가지게 된다면 result 값이 1이떠서 isDuplicate가 true를 반환하면서 ,

addGood() 함수안에 있는 if 문이 true가 된다. 

cate_manage.html

addGood() 함수 버튼으로 카테고리의 명이 빈 값과 중복 값을 모두 확인하여 return시켜 사용자가 input값에 다시 데이터를 칠 수 있도록 바꾸었다.

 

빈 값 데이터와 중복 값 데이터 입력시 return으로 반환


 

 

다음 포스팅에서는 카테고리 사용여부 에 관해서 포스팅을 이어나가려고한다.

반응형

댓글