Mybatis-plus id_worker uuid区别
2018/3/8第二版
经过第一版的短浅认识,跟同事讨论交流了一下,决定还是要具体论证下,到底区别是啥,那么怎么处理呢,还有啥能比看源码更直接,更狠呢。来吧一起看源码吧。
看源码前要稍作准备,我的项目是通过maven引入了mp的依赖,承载的工具是idea,所以,学习在Intellij IDEA 中自动加载Maven管理的依赖包的源码
然后直接在idea里面进行全工程搜索IdType,如下:
双击查看代码:
是不是开始有点明白了呢?没事,不明白,咱们继续:
ID_WORKER
先进入
IdWorker.getId()
查看ID_WORKER是怎么获取id的:
返回的是长整型,64位数,继续点进去:
这个就是分布式高效有序ID生产黑科技(sequence) 算法项目了。所以ID_WORKER怎么获取id是不是懂了。
UUID
再来看下UUID怎么获取的:
看名称,我们大概可以知道是返回32位数的id。点进去:
利用的是 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关键字,如下:
大概明白了一点了,那就是uuid其实和id_worker没啥区别,只不过觉得这是个不错的黑科技,所以稍作优化,推荐出来。