MP 主鍵策略

2021-10-10 19:18:23 字數 2352 閱讀 5983

雪花演算法

mp 支援多種主鍵策略 預設是推特的「」 雪花演算法「」 ,也可以設定其他策略下面我演示主鍵策略使用

public

enum idtype

public

intgetkey()

}

mybatis-plus:

global-config:

db-config:

id-type: uuid/none/input/id_worker/id_worker_str/auto 表示全域性主鍵都採用該策

auto(0),

none(1),

input(2),

assign_id(3),

assign_uuid(4),

/** @deprecated */

@deprecated

id_worker(3),

/** @deprecated */

@deprecated

id_worker_str(3),

/** @deprecated */

@deprecated

uuid(4);

描述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)

@tableid

(type = idtype.auto)

//主鍵自增 資料庫中需要設定主鍵自增

private long id;

@tableid

(type = idtype.none)

//預設 跟隨全域性策略走

private long id;

@tableid

(type = idtype.uuid)

//uuid型別主鍵

private long id;

@tableid

(type = idtype.id_worker)

//數值型別 資料庫中也必須是數值型別 否則會報錯

private long id;

@tableid

(type = idtype.id_worker_str)

//字串型別 資料庫也要保證一樣字元型別

private long id;

@tableid

(type = idtype.input)

//使用者自定義了 資料型別和資料庫保持一致就行

private long id;

snowflake 演算法,是 twitter 開源的分布式 id 生成演算法。其核心思想就是:使用乙個 64 bit 的 long 型的數字作為全域性唯一 id。在分布式系統中的應用十分廣泛,且id 引入了時間戳,基本上保持自增的

這 64 個 bit 中,其中 1 個 bit 是不用的,然後用其中的 41 bit 作為毫秒數,用 10 bit 作為工作機器 id,12 bit 作為序列號

比如下面那個 64 bit 的 long 型數字:

0 | 0001100	10100010	10111110	10001001	01011100	00 | 10001 |1 1001| 0000	00000000
第乙個部分,是 1 個 bit:0,這個是無意義的。

第二個部分是 41 個 bit:表示的是時間戳。

第三個部分是 5 個 bit:表示的是機房 id,10001。

第四個部分是 5 個 bit:表示的是機器 id,1 1001。

第五個部分是 12 個 bit:表示的序號,就是某個機房某台機器上這一毫秒內同時生成的 id 的序號,0000 00000000。

主鍵生成策略

一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...

主鍵生成策略

原文 generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue st...

主鍵生成策略

1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence...