본문 바로가기

개발/BACK

[SpringFramework] 마이바티스 환경에서 INSERT,UPDATE 무시하기

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