mybatis-plus 自增主键插入
时间: 2024-07-11 18:00:56 浏览: 127
MyBatis-Plus是一个基于MyBatis的代码生成器和持久层框架增强工具,它简化了数据库操作,特别是在处理自增主键(也称为序列或ID生成)的插入场景上。
当你需要使用MyBatis-Plus插入数据并自动获取自增主键时,通常会用到`@TableId`注解来指定主键策略。对于MySQL,常见的主键策略有几种:
1. **雪花算法**(Snowflake):默认情况下,如果你没有明确指定,MyBatis-Plus会采用这种策略,它会根据时间戳和机器标识来生成不重复的ID,无需手动提交事务就能得到新ID。
2. **数据库内建序列**:比如InnoDB存储引擎提供了`AUTO_INCREMENT`功能。在这种模式下,你需要在数据库表中为ID字段设置为`auto_increment`属性,并不需要在代码层面做特殊处理,MyBatis-Plus会在插入后自动获取新值。
3. **数据库外键生成**:如果使用的是Oracle等支持序列的数据库,你可以创建一个序列,然后通过`@TableId(type = IdType.SEQUENCE)`指定序列名。
插入示例:
```java
User user = User.builder()
.username("test")
.build();
user.save(); // 自动保存并获取新的ID
```
在这个例子中,`save()`方法会调用底层的SQL插入语句,并根据配置从数据库获取新的主键值。
如果你想在程序级别控制ID生成,可以使用`insertWithGeneratedKey`方法:
```java
Integer id = user.insertWithGeneratedKey(); // 插入并返回自增ID
```
阅读全文