[MyBatis/MySQL] 하나의 Mapper Method에서 여러개의 Statement를 쿼리하는 방법
마이바티스 MySQL에서 한 번에 여러개의 구문 실행하기?
제목에도 쓰여있듯, MySQL 사용자를 위한 방법입니다. 일반적으로 아래와 같이 Mapper XML에 작성하고 돌리면 구문 에러가 날 겁니다.UPDATE md
SET call_count =
NULL
#{callCount}
WHERE biz_id = (
SELECT id
FROM business
WHERE cat3 = #{id}
);
UPDATE category_3rd
SET call_count =
NULL
#{callCount}
WHERE id = #{id};
웃기는 건, 워크벤치나 IDE 자체 내장 SQL 툴로 돌리면 된다라는 겁니다. 하지만 그건 해당 툴들이 Multiple Queries를 지원하기 때문이죠.
감이 잡히셨죠? Multiple Queries를 지원 가능하게 하면 됩니다.
한 번에 여러 구문 실행 가능하게 하는 방법
다시 말씀드리지만, MySQL 전용입니다. 다른 DB들은 각각 따로 방법이 있는 듯 했습니다. Oracle의 경우엔 BEGIN .. END를 썼던가 하고, MSSQL의 경우엔 GO를 중간에 집어넣었던 것 같고... 암튼 그것들은 그냥 흘려봤기 때문에 직접 검색하시고, 여기선 MySQL 기준으로 알려드리겠습니다.
DB Connection URL에 allowMultiQueries=true를 추가해주세요. 전 현재 스프링 프레임워크를 사용중이므로 Bean Configuration을 예시로 들겠습니다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://dbline.co.kr:3306/dbline_new?useSSL=false&allowMultiQueries=true"/>
<property name="username" value="root"/>
<property name="password" value="PW"/>
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="schema" value="dbline_new"/>
</bean>
참 쉽죠? 이제 위의 SQL이 구문 오류 없이 정상적으로 돌아가는 것을 확인하실 수 있을 겁니다.
댓글
댓글 쓰기