Programming/Java
[Mybatis] foreach를 사용하여 update 하기
brad.min
2023. 8. 28. 11:39
반응형
적용 이유
개인 정보 보호를 위해 고객 데이터를 삭제하는데 삭제 시간을 한번에 업데이트 할 필요가 있었다. 한 콜에 여러 업데이트를 할 수 있는 장점은 있지만 SQL 인잭션과 같은 이유로 보안상에는 좋지 않다.
환경
springboot 2.5.5
1. Mybatis 업데이트 쿼리
<update id="ID" parameterType="VO">
<foreach collection="ListName" item="item" open="" close="" separator=";">
UPDATE TABLE
SET DELETE_DTTM = DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
WHERE 1=1
AND 고객정보1 = #{item.고객정보1}
AND 고객정보2 = #{item.고객정보2}
</foreach>
</update>
위의 쿼리를 살펴보면 parameterType에는 VO가 있는데 List 안에 VO 객체를 넣고 Mybatis에 전달하는 형태로 구현했다.
collection에는 리스트 변수명을 넣어주었다.
List<VO> deleteTarget = mapperComponent.
2. allowMultiQueries=true
위의 쿼리를 실행하기 위해서는 해당 옵션을 true로 변경해줘야 한다. DB 자체에서 변경해줘야 할 수도 있지만 설정 파일인 application.yml를 아래와 같이 수정하였다.
jdbc:mysql://접속정보&allowMultiQueries=true
반응형