컴퓨터 관련/Java 정보
SelectKey 할때 return 값이 항상 1 인 에러
보뇨
2018. 6. 18. 13:16
반응형
여기서 좀 헤맷는데 역시 stackoverflow 성님들의 도움으로 극뽁할수있었다!!
다른 말 다 필요없고 아래 설명을 보도록하자
아래와 같이 mybatis 로 쿼리를 만들었고 인서트시 그 인서트된 값의 인덱스를 가져오도록하기위해서 selectKey 를 설정함
근데 자바단에서 자꾸 return 1 이 발생함 그냥 null 도 아니거니와....
1 2 3 4 5 6 7 8 9 10 | <!-- sms 발신 번호 추가하기 --> <insert id="insertSmsSender" parameterType="com.enow.eoz.api.vo.SmsSenderVO"> <selectKey keyProperty="id" resultType="integer" order="AFTER"> SELECT LAST_INSERT_ID() as id </selectKey> INSERT INTO sms_sender (tel, company_id) VALUES (#{tel}, #{company_id}) </insert> | cs |
알고보니 아래 2번줄에서 smsSenderInsert 를 통해 디비 접근해서 이것저것하는데 반환값을 int result 에 넣는것이 잘못된거였다!
애초에 인자로 보낸 vo 클래스부분에 id 가 적혀서 오는것이었다!!!!!!!!! 그래서 4번줄과 같이 설정했음 ㅎ
1 2 3 4 | SmsSenderVO vo = new Gson().fromJson(body, SmsSenderVO.class); int result = smsSenderService.smsSenderInsert(vo); Map<String, Object> resultMap = new HashMap<String, Object>(); resultMap.put("id", vo.getId()); | cs |
***
1년이 지난 지금 mybatis 를 돌아보다가 깨달음
굳이 selectKey 꺽세를 쓸필요도 없이 insert 태그쪽에 useGeneratedKeys="true" keyProperty="id" 를 추가해주면 해당객체 id 에 자동으로 초기화가 진행됨
반응형