MyBatis에서 insert, update, delete문의 리턴 값에 대해…

4,718 views
Skip to first unread message

강동욱

unread,
Mar 1, 2012, 8:31:45 PM3/1/12
to Korea Spring User Group
안녕하세요. 3월이 되니까 겨울 날씨는 온데간데 없어지고 따뜻한 봄날씨가 됬네요 :D 다름이 아니라 이번에 MyBatis를 이용
하면서 select문을 제외한 나머지 구문을 이용할 시에 해당 쿼리의 결과가 반영된 컬럼 수가 반환되는 걸로 알고 있었는데요.

이상하게 제 환경에서는 이걸 정상적으로 반환해주질 않고 있네요. insert나 delete, update 구문을 myBatis
를 이용해 실행하면 결과에 상관없이 -2147482646 이런 숫자 값을 리턴하고 있습니다.

혹시나 싶어서 소스를 다운받아 selectOne()이란 메서드가 뭘 리턴하는지 역추행해봤는데요.

public int update(Statement statement) throws SQLException {
PreparedStatement ps = (PreparedStatement) statement;
ps.execute();
int rows = ps.getUpdateCount();
Object parameterObject = boundSql.getParameterObject();
KeyGenerator keyGenerator = mappedStatement.getKeyGenerator();
keyGenerator.processAfter(executor, mappedStatement, ps,
parameterObject);
return rows;
}

최종적으로 위와 같은 메서드를 실행시키는 것으로 확인되어 PreparedStatement 클래스의 getUpdateCount()
란 메서드를 리턴시키는 것으로 확인하였습니다.

그래서 질문드리는데 혹시 MySQL의 InnoDB에서 해당 메서드를 지원하지 않는 다거나 하는 제약이 있는지 여쭙고 싶습니다.
제가 스프링 이전에 getUpdateCount라는 메서드를 써본 적이 없어서 이 메서드의 특성을 잘 모르겠네요 :(

어떤 상황에서 -2147482646 란 값을 리턴하는지두요. 혹시 답을 알고 계시다면 꼭 좀 부탁드립니다. 좋은 하루되세
요 :D

신승한

unread,
Mar 2, 2012, 3:16:40 AM3/2/12
to ks...@googlegroups.com

기본설정이 Batch로 동작하게 되어있는지 확인해보세요


2012년 3월 2일 오전 10:31, 강동욱 <happens...@gmail.com>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.


강동욱

unread,
Mar 2, 2012, 3:32:50 AM3/2/12
to Korea Spring User Group
<setting name="defaultExecutorType" value="BATCH" />

혹시 이 설정을 말씀하시는 건가요? 현재 이 옵션을 계속 유지하고 있는데도 안되네요.

강동욱

unread,
Mar 2, 2012, 3:36:33 AM3/2/12
to Korea Spring User Group
아! 신승한님 말씀이 이 옵션이 Batch로 되면 안된다는 뜻이었나 보네요.

이 옵션을 SIMPLE로 바꾸니 제대로 동작하는 것을 확인하였습니다.

정말 답변 감사드립니다.

이런 엄청 세밀한 정보를 어떻게 알고 계시는지 정말 신기하네요.

여하튼 KSUG가 최곱니다..

Reply all
Reply to author
Forward
0 new messages