저는 MyBatis과 Oracle를 사용했습니다.
<Xml파일-변경 전/후>
<insert id="writeBbsApp" parameterType="com.proj.test.dto.BbsDto">
INSERT INTO EATAEWONBBS
(SEQ, ID, NICKNAME, TITLE, CONTENT,PICTURE, HASHTAG, WDATE, SHOPNAME,
ADDRESS, LATITUDE, LONGITUDE, READCNT,LIKECNT,shopphnum,shopurl, testurl)
VALUES
(bbsseq.NEXTVAL, #{id}, #{nickname}, #{title}, #{content}, 0, #{hashtag}, SYSDATE,
#{shopname}, #{address}, #{latitude},#{longitude}, 0, 0,#{shopphnum},#{shopurl},#{testurl})
</insert>
원래 SEQ값을 만들어둔 bbsseq라는 시퀀스로 자동증가하게 해둔 상태인데 글을 쓸고나서 자동증가하는 seq값을 알고싶을때 select문을 한번 더 써야되는 번거로움을 줄이고자 알아봤다.
그러다가 selectKey로 insert,update,delete문에서 컬럼값을 얻어올 수 있다는걸 알고 적용해봤다.
<insert id="writeBbsApp" parameterType="com.proj.test.dto.BbsDto">
INSERT INTO EATAEWONBBS
(SEQ, ID, NICKNAME, TITLE, CONTENT,PICTURE, HASHTAG, WDATE, SHOPNAME,
ADDRESS, LATITUDE, LONGITUDE, READCNT,LIKECNT,shopphnum,shopurl, testurl)
VALUES
(#{seq}, #{id}, #{nickname}, #{title}, #{content}, 0, #{hashtag}, SYSDATE,
#{shopname}, #{address}, #{latitude},#{longitude}, 0, 0,#{shopphnum},#{shopurl},#{testurl})
<selectKey resultType="java.lang.Integer" keyProperty="seq" order="BEFORE">
SELECT bbsseq.nextval
FROM DUAL
</selectKey>
</insert>
resultType에는 select로 조회해서 리턴받을 값의 타입을 쓰는 곳으로 seq값은 Integer기때문에 저렇게 작성했다.
그리고 keyProperty에는 select로 조회해서 받을 변수명으로 작성했다.
order에는 insert문 전/후에 실행한건지 정하는 곳으로 먼저 시퀀스값 증가를 해야하니까 before로 했다.
테이블명 자리에는 dual로 임시테이블을 넣었다.
<Service파일-변경 전/후>
public int writeBbsApp(BbsDto dto) {
int n = dao.writeBbsApp(dto);
return seq;
}
public int writeBbsApp(BbsDto dto) {
int n = dao.writeBbsApp(dto);
int seq= dto.getSeq();
System.out.println("seq 확인: " + seq);
System.out.println("글저장 성공여부 "+n);
return seq;
}
그리고 service부분에서 dto.getSeq를 통해서 selectKey로 조회한 seq값을 리턴받으면 된다!
이렇게하면 새로 작성한 글을 db에 저장하고 방금 저장된 그 글의 seq값을 한번에 알아올 수 있다 기억하자!!
'BackEnd > RDBMS' 카테고리의 다른 글
[MySQL 8.0] Node.js 프로젝트에서 MySQL 연동 오류 해결 (2) | 2022.10.30 |
---|---|
[Oracle] ORA-00054 : resource busy and acquire with nowait specified or timeout expired (0) | 2022.03.25 |
[Oracle, Sqlplus] Oracle11g 한글깨짐 해결중... (0) | 2022.03.16 |
[Oracle] 맥 Docker 설치 후 오라클 연동 (0) | 2022.02.24 |
[Oracle] 서브쿼리 (SubQuery ) - SELECT, FROM, WHERE (0) | 2021.12.26 |