有些数据库表使用了自增主键,在插入数据后,需要立刻查询这条数据,或者需要将此纪录关联到其他表,就需要用到插入的这条记录的ID,MyBatis默认情况下返回的影响记录的行数,可以更改配置,使得能够返回自动生成的主键。

方法很简单,在Maper文件中添加以下几个配置即可。

<insert id="insertUser"
    parameterType="com.simaek.domain.User"
    useGeneratedKeys="true"
    keyProperty="id"
    keyColumn="id">

// SQL

</insert>

useGeneratedKeys指明使用使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
keyProperty指明的是领域模型中的属性,keyColumn通常可以省略,在数据库字段名称与领域模型中属性名称不一致时,可以通过此参数单独指定。

通过这样的设定,MyBatis在插入记录后,会将自动生成的主键信息,通过Set方法应用到给定的领域模型参数上,我们就可以通过Get方法获取生成的自增ID。

例如:

User user = new User();
user.setName("admin");
user.setAge(22);
user.setSex(1);

userMapper.insertUser(user);

// 获取插入后自动生成的ID
Long id = user.getId();
最后修改:2023 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏