有些数据库表使用了自增主键,在插入数据后,需要立刻查询这条数据,或者需要将此纪录关联到其他表,就需要用到插入的这条记录的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();