SpringBoot + Mybatis Plus + Oracle 主鍵自增的配置

 

由於 Oracle 不像 SQL Server 和 MySQL 有主鍵自增的設計,需要用創建序列或者觸發器的方式實現主鍵增長,使用 Mybatis 時可以直接在 SQL 語句中使用序列,如果我們使用 Mybatis Plus 的通用 Mapper ,不自己寫 SQL,這種情況下要實現主鍵自增就需要做一些額外的配置了:

 

1. 在application.yml 配置文件中增加

mybatis-plus:
  global-config:
    #主鍵類型  0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";
    id-type: 1
    # Sequence序列接口實現類配置
    key-generator: com.baomidou.mybatisplus.incrementer.OracleKeyGenerator

其中 id-type 值爲1 表示 “用戶輸入ID”,使用序列就相當於用戶輸入ID 

 

2. 實體類增加 @KeySequence 註解,@TableId 增加 type = IdType.INPUT

@Data
@Accessors(chain = true)
@TableName("yjk_user")
@KeySequence(value = "SEQ_YJK_USER", clazz = Integer.class)
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "user_id", type = IdType.INPUT)
    private Integer userId;

    @TableField("phone_number")
    private String phoneNumber;

    @TableField("password")
    private String password;

}

其中 @KeySequence 註解中的 value 值爲你創建的對應這張表的序列名,clazz 的值是和表的主鍵類型對應的,如果表的主鍵是varchar2 類型但是需要從 sequence 中取值,可以直接將 clazz 的值設爲 String.class

還要注意 type = Idtype.Input 一定不能用 type = Idtype.Auto

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章