如果你使用的orm框架是mybatis plus,且版本在3.3.0及以上,它提供了一種優雅的id生成方式。
注:詳情可參考mybatis plus官網。
如果你使用的是mybatis,強烈建議切換到mybatis plus。注:mybatis plus特性。
環境:springboot + mysql + mybatisplus
>
>
com.baomidougroupid
>
>
mybatis-plus-boot-starterartifactid
>
>
3.3.0version
>
dependency
>
mybatis-plus:-
classpath
global-config
:db-config
:id-type
: assign_id #自3.3.0開始,預設使用雪花演算法+uuid
table-underline
:true
banner
:false
configuration
:log-impl
: org.apache.ibatis.logging.stdout.stdoutimpl #列印sql便於除錯
這裡的重點是id-type: assign_id
@override
public
void
add(article article)
如果使用的是nosql,如mongodb,那麼該如何使用呢?
/*
這裡無需載入整個mybatis plus,因為只用到了id生成器。
mybatis plus的mybatisplusautoconfiguration類註解上有乙個@autoconfigureafter註解:@autoconfigureafter()
因此,不載入 datasourceautoconfiguration,就不會載入mybatisplusautoconfiguration了。
*/(exclude =
)public
class
/** * 利用mybatis plus的主鍵id生成器生成全域性唯一id
* @return
*/@bean
public idworker idworker()
}
@autowired
private idworker idworker;
public
void
add(spit spit)
mybatis plus中雪花演算法的實現主要在idworker
類中。
public
class
idworker
/** * 獲取唯一id
** @return id
*/public
static
long
getid
(object entity)
/** * 獲取唯一id
** @return id
*/public
static string getidstr()
/** * 獲取唯一id
** @return id
*/public
static string getidstr
(object entity)
/** * 格式化的毫秒時間
*/public
static string getmillisecond()
/** * 時間 id = time + id
* 例如:可用於商品訂單 id
*/public
static string gettimeid()
/** * 有參構造器
** @param workerid 工作機器 id
* @param datacenterid 序列號
* @see #setidentifiergenerator(identifiergenerator)
*/public
static
void
initsequence
(long workerid,
long datacenterid)
/** * 自定義id 生成方式
** @param identifiergenerator id 生成器
* @see globalconfig#setidentifiergenerator(identifiergenerator)
*/public
static
void
setidentifiergenerator
(identifiergenerator identifiergenerator)
/** * 使用threadlocalrandom獲取uuid獲取更優的效果 去掉"-"
*/public
static string get32uuid()
}
示例**如下: 雪花演算法生成分布式ID
package top.sponger.common.util import lombok.data 描述 twitter的分布式自增id雪花演算法snowflake public class snowflake if machineid max machine num machineid 0 th...
SnowFlake雪花演算法生成分布式id
author twitter 雪花演算法snowflake created on 2019 3 14.author twitter public class idsnowflake 起始的時間戳 private final static long start stmp 1480166465631l ...
工具類 雪花演算法生成分布式ID
工具類 雪花演算法生成分布式id snowflake 演算法,是 twitter 開源的分布式 id 生成演算法。其核心思想就是 使用乙個 64 bit 的 long 型的數字作為全域性唯一 id。在分布式系統中的應用十分廣泛,且id 引入了時間戳,基本上保持自增的,後面的 中有詳細的註解。這 64...