MySQL数据库
使用自增列(Auto Increment Column)
MySQL 支持自增列,这是一种方便的方式来生成主键值。在 MyBatis-Plus 中,你可以使用 @TableId(type = IdType.AUTO) 注解来指定自增列作为主键生成策略。
首先,确保你的 MySQL 表中已经设置了自增列。例如:
CREATE TABLE your_table_name (
id INT AUTO_INCREMENT PRIMARY KEY,
other_columns...
);
然后,在实体类中使用 @TableId(type = IdType.AUTO) 注解来声明使用自增列作为主键生成策略:
import com.baomidou.mybatisplus.annotation.*;
import org.apache.ibatis.annotations.Mapper;
@TableName("your_table_name")
public class YourEntity {
@TableId(type = IdType.AUTO) // 使用 AUTO 类型的主键
private Long id;
// 其他属性和方法
}
在这种情况下,MyBatis-Plus 会自动处理自增列的主键生成。在插入数据时,MySQL 数据库会自动生成唯一的自增值作为主键。
Oracle数据库
由于在Oracle中没有主键自增的功能,所以要实现只能通过序列。
首先,我们需要在数据库中创建一个序列(Sequence),用于生成主键值:
CREATE SEQUENCE YOUR_SEQUENCE_NAME
INCREMENT BY 1
START WITH 1
MAXVALUE 999999999
NOCYCLE
NOCACHE;
接下来,我们可以在实体类中使用 @TableId(type = IdType.INPUT) 注解,表示我们将手动指定主键值:
import com.baomidou.mybatisplus.annotation.*;
import org.apache.ibatis.annotations.Mapper;
@TableName("your_table_name")
@KeySequence(value = "YOUR_CUSTOM_SEQUENCE_NAME") // 设置自定义序列名
public class YourEntity {
@TableId(type = IdType.INPUT) // 使用 INPUT 类型的主键
private Long id;
// 其他属性和方法
}
注意
在Orcale对应的实体类中不能使用@TableId(type = IdType.AUTO)
要用INPUT
来手动生成主键策略。