MybatisPlus的各種支持的主鍵策略!


注:本文代碼樣例及sql腳本均已上傳至gitee:spring-boot-mybatis-plus學習

Mybatis支持的主鍵策略

MybatisPlus支持的主鍵策略定義在IdType中:

描述
AUTO 數據庫ID自增
NONE 無狀態,該類型為未設置主鍵類型(注解里等於跟隨全局,全局里約等於 INPUT)
INPUT insert前自行set主鍵值
ASSIGN_ID 分配ID(主鍵類型為Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默認實現類為DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID 分配UUID,主鍵類型為String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默認default方法)
ID_WORKER 分布式全局唯一ID 長整型類型(please use ASSIGN_ID)
UUID 32位UUID字符串(please use ASSIGN_UUID)
ID_WORKER_STR 分布式全局唯一ID 字符串類型(please use ASSIGN_ID)
/**
 * 生成ID類型枚舉類
 *
 * @author hubin
 * @since 2015-11-10
 */
@Getter
public enum IdType {
    /**
     * 數據庫ID自增
     */
    AUTO(0),
    /**
     * 該類型為未設置主鍵類型(注解里等於跟隨全局,全局里約等於 INPUT)
     */
    NONE(1),
    /**
     * 用戶輸入ID
     * <p>該類型可以通過自己注冊自動填充插件進行填充</p>
     */
    INPUT(2),

    /* 以下3種類型、只有當插入對象ID 為空,才自動填充。 */
    /**
     * 分配ID (主鍵類型為number或string),
     * 默認實現類 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(雪花算法)
     *
     * @since 3.3.0
     */
    ASSIGN_ID(3),
    /**
     * 分配UUID (主鍵類型為 string)
     * 默認實現類 {@link com.baomidou.mybatisplus.core.incrementer.DefaultIdentifierGenerator}(UUID.replace("-",""))
     */
    ASSIGN_UUID(4),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_ID}
     */
    @Deprecated
    ID_WORKER_STR(3),
    /**
     * @deprecated 3.3.0 please use {@link #ASSIGN_UUID}
     */
    @Deprecated
    UUID(4);

    private final int key;

    IdType(int key) {
        this.key = key;
    }
}

可以使用@TableId確定主鍵,使用type屬性規定主鍵策略:

    @TableId(type = IdType.AUTO) //指定主鍵
    private Long id;

測試一下:

    @Test
    void insert() {
        User user = new User();
        user.setName("auto");
        user.setEmail("12222@qq.com");
        user.setRemark("備注信息");
        user.setAge(20);
        user.setCreateTime(new Date());
        int rows = mapper.insert(user);
        System.out.println("影響記錄數: " + rows);
        System.out.println("主鍵id :" + user.getId());
    }

配置主鍵策略的方式

文檔:https://mybatis.plus/config/#dbconfig

  1. 全局配置
mybatis-plus:
  global-config:
    db-config:
      id-type: AUTO
  1. 局部配置
    @TableId(type = IdType.AUTO) //指定主鍵
    private Long id;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM