MyBatis-Plus通过注解设置主键自增策略

发布时间 2023-08-29 15:27:06作者: Cloong

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来手动生成主键策略。