tkmybatis insertSelective插入数据返回主键id
时间: 2025-06-28 07:02:43 浏览: 17
### 使用 TkMyBatis 的 `insertSelective` 方法插入数据并返回生成的主键 ID
对于 MySQL 和 PostgreSQL,在使用 MyBatis 或其扩展库 tk-MyBatis 进行数据库操作时,可以通过配置特定选项来确保插入记录后能够自动获取由数据库生成的主键值。
当目标数据库为 MySQL 时,可以利用 `useGeneratedKeys`, `keyProperty` 及 `keyColumn` 参数配合 `@Options` 注解完成此功能[^2]。然而针对 PostgreSQL,则需注意由于其实现机制的不同——即通过序列(sequence) 来管理自增值的情况特殊处理方式[^3]。
具体来说:
#### 配置 Mapper XML 文件
如果选择基于XML定义SQL映射语句的方式,则应在相应的 `<insert>` 节点内加入如下属性:
```xml
<insert id="insertSelective" useGeneratedKeys="true" keyProperty="id">
<!-- SQL INSERT statement here -->
</insert>
```
#### Java代码示例
而在Java端调用该方法前无需额外设置主键策略注解(特别是在PostgreSQL环境下),只需保证实体类中标记了 `@Id` 即可。下面给出一段完整的例子展示如何执行插入操作以及访问新产生的ID:
```java
// 假设有一个名为User的POJO类,其中包含'id'作为主键字段,并已标注 @Id
public class User {
private Long id;
// other fields...
}
// Service层逻辑
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void addUser(User user){
int result = userMapper.insertSelective(user);
if(result < 1){
throw new RuntimeException("Insert failed.");
}
System.out.println("Newly inserted record's ID is:" + user.getId());
}
}
```
上述代码片段展示了如何在服务层中调用 `insertSelective()` 方法并向控制台打印刚插入的数据项所对应的唯一标识符。需要注意的是,这里假设使用的持久化接口已经继承自 `BaseMapper<T>` 接口所提供的默认行为[^4]。
阅读全文
相关推荐


















