Programing/Spring

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

리커니 2016. 4. 18.
반응형

 

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);


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

 

반응형

댓글

💲 추천 글