Mybatisで自動採番された値を取得

Mybatisで自動採番された値を取得

MyBatisで自動採番された値を取得する方法は、insert操作の後に自動生成されたキーを取得する必要があります。
一般的には、@Optionsアノテーションを使って設定します。

例: test_tableへの自動採番とキーの取得

1. データベーステーブル: test_table
CREATE TABLE test_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);
2. Javaクラス: TestEntity
public class TestEntity {
    private Integer id;
    private String name;

    // GetterとSetter
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
3. Mapperインターフェース: TestMapper
public interface TestMapper {
    @Insert("INSERT INTO test_table(name) VALUES(#{name})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertTestEntity(TestEntity testEntity);
}
4. 使用方法
TestEntity testEntity = new TestEntity();
testEntity.setName("example name");

TestMapper mapper = sqlSession.getMapper(TestMapper.class);
mapper.insertTestEntity(testEntity);

Integer generatedId = testEntity.getId();
System.out.println("Generated ID: " + generatedId);

@OptionsアノテーションのuseGeneratedKeysをtrueに設定することで、自動生成されたキーが挿入後にtestEntityのidプロパティに設定されます。
これにより、insert操作の後に自動採番された値を取得できます。