MySQL获取最近新增数据的id

背景

当我们新增一条数据时,需要立刻获得这条数据的id

如何实现

推荐使用SELECT LAST_INSERT_ID()

MyBatis代码

1
2
3
4
5
6
<insert id="insertQljContract" parameterType="QljContract" useGeneratedKeys="true" keyProperty="id">
insert into qlj_contract
<selectKey keyProperty="kid" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>

SELECT LAST_INSERT_ID():得到刚 insert 进去记录的主键值,只适用于自增主键

keyProperty:将查询到主键值设置到 parameterType 指定的对象的那个属性

order:SELECT LAST_INSERT_ID() 执行顺序,相对于 insert 语句来说它的执行顺序

resultType:指定 SELECT LAST_INSERT_ID() 的结果类型

Domain层

加入相关代码

1
2
3
private Integer kid;
public Integer getKid() { return kid; }
public void setKid(Integer kid) { this.kid = kid; }

注意

假如你使用一条INSERT语句插入多个行, LAST_INSERT_ID() 只会返回插入的第一行数据时产生的值

比如我插入了 3 条数据,它们的 id 分别是 21,22,23,那么最后我还是只会得到 21 这个值