mybatis3.0.6 에서 selectKey가 동작하지 않을때

mybatis3.0.6 , mssql2000 , spring3.0환경에서 테스트 했습니다.
test테이블의 pk는 identity가 걸려있었습니다.

ibatis2.5버전대 에서 insert했던 데이터의 id값을 가져오기위해 사용하던 selectkey 태그가 파라메터 이름도 약간 바뀌고
중요한건 정상적으로 동작하지 않았습니다.

그래서 보니 selectkey를 사용하지 않고 가능한 방법이 있으나 약간 이해하기 어려웠습니다.
일단 방법은
useGeneratedKeys="true" keyProperty="no" 처럼
 insert 태그에 useGeneratedKeys="true" 를 추가하고 keyProperty에 identity걸린 필드명을 적어줍니다.

그리고 컨트롤러에서
applicationService.insertTest(TestFromSession);
보통 다음과 같이 insert문을 호출할 텐데 
호출 당시 넣어줬던 파라메터에 들어옵니다. 제 예제로 보자면 no변수에 들어왔죠
저는 자바가 call by value인줄알고 있어서 어떻게 이렇게 되는건지 검색해보니
object는 call by references로 기본형들은 call by value 였네요..
어쨋든 이런 이상한 방법(제가 보기엔)으로 작동합니다...

댓글