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);
해당 쿼리가 실행되면 가장 퇴근에 저장된 자동증가값을 리턴하여 위와 같이 변수로 받을 수 있다.
'Programing > Spring' 카테고리의 다른 글
Spring Interceptor 활용 세션 설정 인터셉터 세션설정 ajax, 페이지연결 구분 (0) | 2017.03.31 |
---|---|
AOP 설정을 활용한 세션체크 AOP Session Check (0) | 2017.03.15 |
AOP 설정을 활용한 모든 메소드 수행시간 출력 (0) | 2017.01.26 |
ibatis # $차이 동적 테이블, 동적 컬럼을 사용해보자. (0) | 2016.07.06 |
Oracle Sequence 시퀀스 사용 조회/생성/수정/삭제 (0) | 2016.01.28 |
댓글