728x90
스프링 프레임워크 환경에서 개발을 진행할 때,
서비스를 생성하여 데이터를 [등록] 하거나 [수정]하는 경우들이 있다.
하지만 해당 API를 요청하더라도 데이터를 등록하거나 수정하지 않도록 무시하고 싶은 경우가 있을 수 있다
이 방법을 사용하여 구현해 놓으면,
해당 서비스가 실행되어도 데이터베이스에서는 쿼리가 실행되지 않아서 등록되지 않는 현상을 볼 수 있다
구현
우선 해당 기능을 구현하기 위해 데이터베이스에서는 유니크한 인덱스를 생성해야한다.
생성한 유니크 인덱스 값을 통해 중복된 값이 들어오면 무시하도록 구현할 생각이기 때문이다
예를들어서,
책을 빌린 이력을 데이터베이스에 한 개의 row만 저장하고 싶다
그러면 책 빌린 이력테이블에 유니크 인덱스를 생성해준다
CREATE UNIQUE INDEX "id_date" ON "tb_history" ("user_id","create_date");
책 아이디와 생성일자를 결합하여 유니크 인덱스를 만드는 쿼리
유니크 인덱스를 생성했으면,
이제 매퍼파일에 구현되어있는 책 이력 등록 쿼리를 수정하자
INSERT IGNORE tb_history (id,user_id,name,create_date,delete_date)
VALUES (null,#{user_id},#{name},#{create_date},null);
INSERT 문 뒤에 IGNORE 를 붙여주게 되면, 동일한 유니크 인덱스가 들어왔을 때,
INSERT 구문이 무시된다
그래서 해당 기능을 스프링에서 실행시켜서 int 타입으로 데이터를 return 시켜보면
INSERT가 무시되어서 등록되는 데이터가 없기 때문에 return되는 결과 값이 0 이 나온다.
728x90
'개발 > BACK' 카테고리의 다른 글
[Mysql] 날짜 차이 계산하기 (0) | 2022.08.19 |
---|---|
[JAVA] Mysql GROUP_CONCAT 데이터 int 타입으로 변경하기 (0) | 2022.08.15 |
[Mysql] limit 페이징에서 쿼리 조회 건 수 구하기 SQL_CALC_FOUND_ROWS (0) | 2022.06.15 |
[Ubuntu] 서버 Tomcat 꺼지면 재시작하는 스크립트 작성하기 (0) | 2022.05.23 |
[Ubuntu] Linux 에서 톰캣 재시작 스크립트 작성하기 (0) | 2022.05.23 |