본문 바로가기

IT/mybatis

[mybatis] insert 시 auto_increment로 생성된 키 값 얻기

1. aliases model

public class Board {

    private int id;
    private String title;
    private String content;
    
    //getter, setter 생략
}

2. board 테이블 SQL

CREATE TABLE `board` (
	`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	`title` VARCHAR(100) NULL DEFAULT NULL,
	`content` VARCHAR(3000) NULL DEFAULT NULL,
	`writer` VARCHAR(100) NULL DEFAULT NULL
)

3. @Mapper 어노테이션이 선언된 Mapper 인터페이스

import com.example.demo.model.Board;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface BoardMapper {
    void saveBoard(Board board);
}

4. mapper-board.xml

<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.example.demo.mapper.BoardMapper">
    
    <insert id="saveBoard" parameterType="Board" useGeneratedKeys="true" keyProperty="id">
        insert into board (
            title,
            content
        ) values(
            #{title},
            #{content}
        )
    </insert>
</mapper>
userGeneratedKeys="true"로 해주고 keyProperty에는 auto_increment로 선언된 column 명을 입력해주면 됩니다.

BoardMapper의 saveBoard 메소드를 실행하면 board가 insert되고 파라메터로 넘겼던 Board 객체의 id 멤버 변수에 key 값이 입력됩니다.

'IT > mybatis' 카테고리의 다른 글

[mybatis] mybatis 동적 SQL 만들기  (0) 2021.02.01