보뇨 다이어리

SelectKey 할때 return 값이 항상 1 인 에러 본문

컴퓨터 관련/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 에 자동으로 초기화가 진행됨

반응형