반응형
- 필요성 : Mybatis의 foreach문을 통해 List 타입의 HashMap/Hashtable의 데이터를 insert 함으로써 다량의 데이터를 입력할 수 있다.
- Oracle 다중 데이터 insert
INSERT ALL
INTO TABLE명 (컬럼명...) VALUES (값...)
INTO TABLE명 (컬럼명...) VALUES (값...)
INTO TABLE명 (컬럼명...) VALUES (값...)
.
.
.
SELECT * FROM DUAL;
- Mybatis 상에서의 다중 데이터 insert (해당 데이터는 에러 발생함)
<insert id="insertList" parameterType="java.util.HashMap">
<foreach collection="list" item="item" index="index" separator=" " open="INSERT ALL" close="SELECT * FROM DUAL">
INTO TEST_TABLE (
M_1,
M_2
) VALUES
(
'${item.M_1}'
, '${item.M_2}'
)
</foreach>
</insert>
실행 해본 결과 ORA-00933 에러가 발생했다....
검색해 본 결과 <insert> 를 <update>로 변경해주면 정상적으로 insert 됨을 확인했다.
- Mybatis 상에서의 다중 데이터 insert (정상동작)
<update id="insertList" parameterType="java.util.HashMap">
<foreach collection="list" item="item" index="index" separator=" " open="INSERT ALL" close="SELECT * FROM DUAL">
INTO TEST_TABLE (
M_1,
M_2
) VALUES
(
'${item.M_1}'
, '${item.M_2}'
)
</foreach>
</update>
+) 에러log 보고 내 쿼리에 문제있는 줄 알고 날린시간이....
반응형
'Programming > Mybatis' 카테고리의 다른 글
[Mybatis] resultType 을 DTO 또는 VO 로 리턴 시 주의사항 (0) | 2021.12.06 |
---|---|
[Mybatis] Mapper resultType 정리 (0) | 2021.11.30 |
[Mybatis] ParameterType List, Map 처리 (feat. foreach구문) (0) | 2021.11.26 |