어노테이션을 사용한 대량의 insert가 가능한가요?
조회수 3452회
안녕하세요 스프링 초보입니다!
STS에 mybatis를 사용하고 있는데요,
어노테이션을 사용하여 컬렉션을 바로 넣을 수 있는 방법은 없을까요?
원하는 것은, @Insert를 사용한 맵퍼에서 아래와 같은 쿼리를 List 컬렉션을 메소드에 인자로 전달해서 수행할 수 있도록 하고싶은것인데요!
INSERT INTO tbname(v1, v2) VALUES (컬렉션 첫 줄의 v1, 컬렉션 첫 줄의 v2), (...), (마지막v1, 마지막v2);
이러한 것을 처리할 수 있는 방법이 혹시 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
public interface HashcodeMapper { @Insert({ "<script>", "INSERT INTO tbname (v1, v2) VALUES ", "<foreach collection='list' item='listItem' separator=','>", "(#{listItem.v1}, #{listItem.v2})", "</foreach>", "</script>" }) int insertList(@Param("list") List<Object> list); }
- https://github.com/mybatis/mybatis-3/tree/master/src/main/java/org/apache/ibatis/scripting/xmltags
- https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/scripting/xmltags/XMLLanguageDriver.java
- https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/scripting/xmltags/XMLScriptBuilder.java
-
(•́ ✖ •̀)
알 수 없는 사용자
- MyBatis 소스 버전을 보니, > 3.2.x 상위 버전 부터 가능한 기능으로 보입니다. 알 수 없는 사용자 2016.4.1 03:07
- 답변 감사드립니다! 일단 기본 기능에서는 지원하지 않는 것 같구 위에서 말씀주신 드라이버랑 빌더를 연동시켜서 써야하는 것 같긴 한데.. 어떻게 연동해서 써야하는건지 잘 모르겠습니다! ㅠㅠ 어디서 드라이버와 빌더를 인스턴스화 해야하는건지 혹시 알 수 있을까요? 에러는 이런 형태로 발생했습니다. ### Error updating database. Cause: java.lang.UnsupportedOperationException ### The error may involve com.some.domain.mapper.methodName-Inline ### The error occurred while setting parameters ### SQL: INSERT INTO tbn(v1, v2) VALUES (?, ?) , (?, ?) ### Cause: java.lang.UnsupportedOperationException] with root cause java.lang.UnsupportedOperationException 알 수 없는 사용자 2016.4.1 09:20
- 사용하시는 MyBatis 버전을 알 수 있을까요? 알 수 없는 사용자 2016.4.1 10:33
- 네! 지금 사용중인 mybatis는 3.3.1이고, mybatis-spring은 1.2.5 버전입니다! 알 수 없는 사용자 2016.4.1 13:10
댓글 입력