개발 순서는 뒤에서부터!!!
create sequence seq_board;
create table tbl_board (
bno number(10,0),
title varchar2(200) not null,
content varchar2(2000) not null,
writer varchar2(50) not null,
regdate date default sysdate,
updatedate date default sysdate
);
alter table tbl_board add constraint pk_board
primary key (bno);
insert into tbl_board(bno, title, content, writer)
values(seq_board.nextval, '테스트 제목', '테스트 내용', 'user00');
-- 중요!!
-- 직접 DB에서 insert한것은 커밋을 해야함
commit;
create table tbl_reply(
rno number(10, 0),
bno number(10, 0) not null,
reply varchar2(1000) not null,
replyer varchar2(50) not null,
replyDate date default sysdate,
updateDate date default sysdate
);
create sequence seq_reply;
alter table tbl_reply add constraint pk_reply primary key(rno);
alter table tbl_reply add constraint fk_reply_board
foreign key(bno) references tbl_board(bno);
...
<insert id="insert">
insert into tbl_board (bno,title,content,writer)
values (seq_board.nextval, #{title}, #{content}, #{writer})
</insert>
<insert id="insertSelectKey">
<selectKey keyProperty="bno" order="BEFORE"
resultType="long">
select seq_board.nextval from dual
</selectKey>
insert into tbl_board (bno,title,content, writer)
values (#{bno},
#{title}, #{content}, #{writer})
</insert>
...
| 항목 | insert | insertSelectKey |
|---|---|---|
bno 생성 | DB 내부에서 seq_board.nextval | MyBatis가 selectKey로 미리 조회 |
Java 객체에 bno 설정 | ❌ 불가능 | ✅ 가능 |
| 출력값 사용 (예: 이후 redirect) | bno 모름 | bno 알 수 있음 |
insertSelectKey 사용insert 사용 @Test
public void testRead() {
BoardVO board = mapper.read(3L);
log.info(board);
Long bno = (long) 4;
mapper.read(bno);
mapper.read((long) 1);
}
→ xml파일에서 항상 resultType을 체크
그리고 MyBatis resultType 도메인을 지정할때는 풀네임으로!