概述

当表的id被设计为自增时,插入数据后想获得新插入数据的id

我曾经试过直接获取最新一条数据的id,虽然可以获取到id,但是这种方式不但麻烦而且也不推荐,因为插入数据成功到获取到id的这段时间内如果又新增了一条数据,那么获取到的就不是我们希望得到的id了

Mybatis支持在插入数据后,返回这条数据的id,这种方式简单又不存在上面出现的问题,推荐使用

实现

XML代码

添加数据的XML代码

1
2
3
4
<insert id="add" parameterType="User" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into t_user (isBorrow, password, state, type, userName, nickName)
values (1, #{password}, 1, 2, #{userName}, #{userName});
</insert>

属性说明

  1. parameterType

    传入的参数类型

  2. useGeneratedKeys

    是否返回插入数据的id

  3. keyProperty

    实体类对应的字段

  4. keyColumn

    数据库中表对应的字段

Java代码

1
2
3
4
5
6
7
8
9
@Test
public void addUser(){
User user = new User();
user.setUserName("tom");
user.setNickName("LeDao");
user.setPassword("123456");
userService.add(user);
System.out.println("自增的id为: "+user.getId());
}

结果