티스토리 뷰

MyBatis

insert 후 키 리턴

xemaker 2022. 3. 14. 10:38

마리아 db insert 후 insert 된 키 값을 리턴해 주는게 있을까 구글링 해보니 있었다.
INSERT 됨과 동시에 생성된 키를 가져오게 하는 useGeneratedKeys 속성입니다.

<insert id="insertPost" parameterType="java.util.HashMap" useGeneratedKeys="true" keyColumn="POST_NO" keyProperty="postNo" >
INSERT INTO POST    (
	BBS_NO			--게시판번호
  , POST_NO			--게시글번호
  , POST_TITLE		--게시글제목
  , CONTENTS		--게시글내용
  , WRT_ID			--작성자ID
  , WRT_DTT			--작성일시
  , VIEW_CNT		--조회수
  , TOP_POST_YN		--공지여부
  , DISP_YN			--노출여부
  , REPLY_YN		--댓글허용여부
)
VALUES              (
	#{bbsNo,jdbcType=VARCHAR}
  , TO_CHAR(POST_SEQ.NEXTVAL)	--시퀀스 사용
  , #{postTitle,jdbcType=VARCHAR}
  , #{contents,jdbcType=VARCHAR}
  , #{wrtId,jdbcType=VARCHAR}
  , SYSDATE
  , 0
  , NVL(#{topPostYn,jdbcType=VARCHAR}, 'N')
  , NVL(#{dispYn,jdbcType=VARCHAR}, 'Y')
  , NVL(#{replyYn,jdbcType=VARCHAR}, 'Y')
)
</insert>


<insert id="insertPost" parameterType="java.util.HashMap" useGeneratedKeys="true" keyColumn="POST_NO" keyProperty="postNo" >
이 부분을 잘 봐야 하며
useGeneratedKeys 속성을 사용할 때 keyColumn, keyProperty 속성이 같이 쓰입니다.
useGeneratedKeys = "true"(기본값 false), keyColumn = [PK 컬럼명], keyProperty = [매핑할 변수명]
이렇게 INSERT한 POST_NO 값을 "postNo"로 바로 가져올 수 있습니다.

public Integer insertPost(Map<String, Object> map) {
	this.sqlSession.insert("board.insertPost", map);
	return Integer.valueOf(String.valueOf(map.get("postNo")));
}


출처:
https://m.blog.naver.com/l1523/221706040458

 

[Mybatis] 쿼리 실행 후 동시에 기본키 or 원하는 값 가져오기(INSERT, UPDATE, MERGE)

INSERT 문을 실행하고나서 잘 실행이 됐는지 확인 또는 생성된 키를 바로 다른 작업에 사용하기 위해...

blog.naver.com


그런데 구지 저렇게 안해도
parameter type을 찍어보면 DB 컬럼값 전체가 찍혀있었다.

즉 MyBatis에서 아래처럼 있다고 하고

<insert id="insertA" parameterType="hashMap">

Dao :

public int insertA(HashMap<String, Object> hashMap){

	int rst=sqlSession.insert("insertA", hashMap);

	System.out.println(hashMap);

}


하고 Dao 에서 파라미터로 보낸 hashMap을 찍어보면 key가 찍힌다.

api 매뉴얼을 보면

  • insert
    Execute an insert statement with the given parameter object. Any generated autoincrement values or selectKey entries will modify the given parameter object properties. Only the number of rows affected will be returned.
    Parameters:statement - Unique identifier matching the statement to execute.parameter - A parameter object to pass to the statement.Returns:int The number of rows affected by the insert.
  • int insert(String statement, Object parameter)

 

파파고에서 번역을 돌려보면

생성된 자동 증가 값 또는 selectKey 항목은 지정된 매개 변수 개체 속성을 수정합니다.

느낌상 parameter로 보내고 DB에서 값이 변경되면 그에 따른 parameter의 값이 변경되는거 같다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함