Programing/Spring

ibatis 자동증가 컬럼 리턴해 사용하기 MySQL selectKey 사용하기

리커니 2016. 4. 18. 15:11
반응형

 

ibatis 자동증가 컬럼 리턴해 사용하기 MySQL selectKey 사용하기

 Mysql 에서 자동증가 컬럼을 설정하기 위해선

테이블 생성시 AUTO_INCREMENT 만 설정 해주면 된다.


예)


CREATE TABLE `webnotice` (

  `LIST_NO` int(10) NOT NULL AUTO_INCREMENT COMMENT '공지사항일련번호' PRIMARY KEY,

  `USER_NAME` varchar(50) DEFAULT NULL COMMENT '등록자명',

  `TITLE` varchar(200) DEFAULT NULL COMMENT '제목',

  `CONTENT` varchar(2000) DEFAULT NULL COMMENT '내용',

  `CREATE_TIME` varchar(50) DEFAULT NULL COMMENT '생성일자',

  `UPDATE_TIME` varchar(50) DEFAULT NULL COMMENT '수정일자',

  `FILE_FLAG` char(1) DEFAULT NULL COMMENT '파일유무',

  `HIT_COUNT` int(5) DEFAULT NULL COMMENT '조회수',

  `DEL_FLAG` char(1) DEFAULT NULL COMMENT '삭제여부',

  PRIMARY KEY (`LIST_NO`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='공지사항';


이렇게 생성된 테이블에 INSERT를 하게 되면 자동증가값이 LIST_NO는 1, 2, 3...이렇게 자동증가 하게 된다.

조건은 자동증가 컬럼은 제외하고 INSERT한다.


예)

INSERT INTO WEBNOTICE( 

USER_NAME, 

TITLE, 

CONTENT, 

CREATE_TIME,

DEL_FLAG,

HIT_COUNT,

file_flag

)

VALUES

'관리자', 

#title#, 

#content#, 

now(),

'N',

0,

#fileFlag#

)


자동 증가값인 LIST_NO는 INSERT 하지 않았다. 하지만 해당 INSERT 문을 실행할때마다 자동으로 들어간다.


참고)

게시판의 경우 첨부파일 등 자동생성된 키값을 가지고 다른 이벤트를 발생시켜야 될때가 있다.

이런경우 아래를 추가 하여 자동 생성된 키 값을 리턴 받을 수 있다.

 

 

iBatis 예)

<insert id="boardDAO.regBoard" parameterClass="BoardVO" >

INSERT INTO WEBNOTICE( 

USER_NAME, 

TITLE, 

CONTENT, 

CREATE_TIME,

DEL_FLAG,

HIT_COUNT,

file_flag

)

VALUES

'관리자', 

#title#, 

#content#, 

now(),

'N',

0,

#fileFlag#

)

        <selectKey resultClass="int">

            SELECT last_insert_id() from dual

        </selectKey>

</insert>


아래쪽 굵은 표시된 부분을 보면 last_insert_id()라는 Mysql 함수를 사용하여

가장 최근에 등록된 자동증가 값을 리턴 받을 수 있다.


int listNo = boardService.regBoard(boardVO);


해당 쿼리가 실행되면 가장 퇴근에 저장된 자동증가값을 리턴하여 위와 같이 변수로 받을 수 있다. 

 

반응형