sqlsession的insert方法怎么获取自增主键
时间: 2025-06-28 08:14:19 浏览: 18
### 使用 MyBatis 的 `SqlSession` 插入数据并获取自增主键
在使用 MyBatis 进行插入操作时,可以通过配置映射文件来实现自动获取自增主键的功能。具体来说,在 XML 映射文件中定义 `<insert>` 标签,并通过设置 `useGeneratedKeys` 和 `keyProperty` 属性来启用这一功能。
对于 MySQL 数据库而言,可以采用如下方式:
#### 配置 Mapper 文件
```xml
<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user (username, password)
VALUES (#{username}, #{password})
</insert>
```
这段代码指定了当执行插入语句后,会利用数据库生成的主键更新传入对象对应的字段[^3]。
#### Java 代码示例
下面是一个简单的例子展示如何调用上述配置的方法,并打印新创建用户的ID:
```java
public class UserDao {
private static final String NAMESPACE = "com.example.mapper.UserMapper";
public void addUser(User user){
try(SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession()){
int rowsAffected = sqlSession.insert(NAMESPACE + ".insertUser", user);
if(rowsAffected > 0){
System.out.println("新增用户成功,ID:" + user.getId());
}
sqlSession.commit();
}
}
}
```
这里的关键在于设置了 `useGeneratedKeys=true` 并指明了 `keyProperty=id`,这使得每次调用 `sqlSession.insert()` 方法之后,如果插入成功,则相应的实体类实例中的 `id` 字段会被填充为最新的自增长值。
另外一种适用于不同类型的数据库(如 Oracle),则可能需要用到 `<selectKey>` 来显式查询序列号或最后插入的 ID 值[^2]。
阅读全文
相关推荐




















