Mybatis-plus id_worker uuid区别

2018/3/8第二版

经过第一版的短浅认识,跟同事讨论交流了一下,决定还是要具体论证下,到底区别是啥,那么怎么处理呢,还有啥能比看源码更直接,更狠呢。来吧一起看源码吧。

看源码前要稍作准备,我的项目是通过maven引入了mp的依赖,承载的工具是idea,所以,学习在Intellij IDEA 中自动加载Maven管理的依赖包的源码

然后直接在idea里面进行全工程搜索IdType,如下:

Mybatis-plus id_worker uuid区别

双击查看代码:

Mybatis-plus id_worker uuid区别

是不是开始有点明白了呢?没事,不明白,咱们继续:

ID_WORKER

先进入

IdWorker.getId()

查看ID_WORKER是怎么获取id的:

Mybatis-plus id_worker uuid区别

返回的是长整型,64位数,继续点进去:

Mybatis-plus id_worker uuid区别

这个就是分布式高效有序ID生产黑科技(sequence) 算法项目了。所以ID_WORKER怎么获取id是不是懂了。

UUID

再来看下UUID怎么获取的:

Mybatis-plus id_worker uuid区别

看名称,我们大概可以知道是返回32位数的id。点进去:

Mybatis-plus id_worker uuid区别

利用的是 UUID来随机生成的32位数的字符串id。

比较结果

至此,ID_WORKER和UUID的区别就出来了:

比较项目 ID_WORKER UUID
由什么生成 new Sequence() UUID
长度 64bit 32bit
id类型 Long String

2018/3/8第一版

id_worker/uuid都是@TableId的属性值的可选枚举值之一。

这两个有啥区别呢,翻遍博客论坛,都没有看见有介绍他们区别的。

于是笔者来到mp(mybatis-plus的缩写)的官网,搜索了,id_worker关键字,如下:

Mybatis-plus id_worker uuid区别

大概明白了一点了,那就是uuid其实和id_worker没啥区别,只不过觉得这是个不错的黑科技,所以稍作优化,推荐出来。