前言:使用MySQLMybatis进行数据新增操作时,通常需要获取刚刚插入数据的ID(主键)。这主要用于关联操作或者是需要立即使用这个新生成的ID的场景

使用useGeneratedKeys和keyProperty

这是获取新插入记录ID的常用方法。在Mybatis的mapper文件中进行SQL映射时,可以通过在<insert>标签中添加useGeneratedKeys="true"keyProperty="id"(假设你的主键属性名为id)来实现。这会使Mybatis利用JDBC的getGeneratedKeys方法来获取数据库自动生成的主键。

1
2
3
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user (name, email) VALUES (#{name}, #{email})
</insert>

使用LAST_INSERT_ID()

在某些情况下,你可能需要在一个复杂的操作过程中获取最后插入的ID,或者useGeneratedKeys方法因为某些原因不适用。这时,可以使用MySQL的LAST_INSERT_ID()函数。这个方法在并发插入时也是安全的,因为它返回的是当前会话最后一次插入操作生成的ID。

1
2
INSERT INTO user (name, email) VALUES ('张三', 'zhangsan@example.com');
SELECT LAST_INSERT_ID();