일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 테스트 커버리지
- javascript
- 리액트
- JPA
- 제이쿼리
- annotation
- Deep Learning
- 구버전
- transformer
- spring
- react
- 어노테이션
- 자바스크립트
- 스프링 부트
- kotlin
- bean
- jQuery
- AWS
- 스프링
- log4j2
- 자료구조
- Test Coverage
- Java
- 하이브리드앱
- spring boot
- C++
- ES6
- data structure
- cache
- Machine Learning
Archives
- Today
- Total
박서희연구소
MyBatis(Oracle DB) 에서 foreach 를 이용하여 다중 Insert 시 생겼던 문제 본문
○ Programming [Web]/Feedback
MyBatis(Oracle DB) 에서 foreach 를 이용하여 다중 Insert 시 생겼던 문제
SEOHUI PARK 2020. 8. 5. 13:20반응형
[문제]
Oracle DB 에 MyBatis 를 이용해 foreach 문을 사용하던 중 문제가 발생했다.
[목표]
위 문제를 해결할 방법을 알아본다.
[해결]
Controller)
SampleDTO sampleDTO = new SampleDTO();
List<SampleDTO> list = new ArrayList<SampleDTO>();
Map<String, Object> map = new HashMap<String, Object>();
for (int count = 0; count < sampleNo.length; count++) {
SampleDTO sampleInsertDTO = new SampleDTO();
sampleInsertDTO.setSampleNo(no);
list.add(sampleInsertDTO);
}
map.put("list", list);
sampleService.insertList(map);
MyBatis)
<update id="insertList" parameterType="java.util.Map">
<foreach collection="list" item="item" index="index" separator=" " open="INSERT ALL" close="SELECT * FROM DUAL">
INTO SAMPLE_TABLE
(
SAMPLE_NO,
SAMPLE_CONTENT,
)
VALUES
(
#{item.sampleNo},
#{item.sampleContent}
)
</foreach>
</update>
위와 같이 MyBatis 에서 update 문으로 사용하지 않고 insert 문으로 다중 insert 를 시도할 시 아래와 같은 에러가 발생한다.
Oracle DB 이용시, update 문을 사용하도록 하자.
- 발생한 에러 메시지 -
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다.
- 끝 -
반응형