mybatis中insert语句返回主键id
时间: 2025-01-18 20:29:12 浏览: 54
### MyBatis Insert 返回主键 ID 示例
对于希望在执行插入操作后获取生成的主键ID的情况,MyBatis 提供了简洁而有效的解决方案。当使用MySQL作为数据库时,在Mapper XML文件中定义`<insert>`语句时应指定两个重要属性:`useGeneratedKeys="true"`以及`keyProperty`指向实体类中的相应字段名称[^2]。
下面是一个具体的实例展示如何配置:
```xml
<!-- RoleMapper.xml -->
<mapper namespace="com.example.mapper.RoleMapper">
<!-- 插入角色信息并返回新创建的角色ID -->
<insert id="addRole" parameterType="com.example.model.Role"
useGeneratedKeys="true" keyProperty="roleId">
INSERT INTO roles (role_name, description)
VALUES (#{name}, #{description})
</insert>
</mapper>
```
这段代码片段展示了向名为`roles`的数据表内添加一条记录的同时利用`useGeneratedKeys=true`指示MyBatis启用JDBC驱动程序提供的自动生成键功能;并通过设定`keyProperty="roleId"`告知框架将产生的主键赋给传入对象里的`roleId`成员变量。
为了验证此过程是否成功完成,可以在Java服务层编写如下测试案例:
```java
// RoleService.java
public class RoleService {
@Autowired
private RoleMapper roleMapper;
public void addNewRole(Role newRole){
// 调用 Mapper 方法之前 roleId 应该为空或默认值
System.out.println("Before insertion, the generated ID is: " + newRole.getRoleId());
try{
roleMapper.addRole(newRole);
// 成功插入后的newRole 对象应当已经包含了由数据库分配的新主键
System.out.println("After successful insertion, the generated ID is now: " + newRole.getRoleId());
} catch(Exception e){
// 处理异常...
}
}
}
```
上述示例说明了通过适当配置MyBatis映射文件,并配合合理的编程实践,能够轻松实现在插入操作结束后立即访问所生成的主键值的功能[^5]。
阅读全文
相关推荐


















