自动增长策略:Auto Increment,分表情况下,每次生成新表还需得到上一张表最后一个值进行自动加1作为起始。
UUID:每次自动生成随机唯一的值。分表时生成新表无需得到上一张表的最后一个值,但这种方式无法排序。
Redis机制生成:redis是单线程的,因此也可以生成全局唯一ID,对主键id性能要求不高时,redis集群可以提高生成主键的吞吐量。
mp自带策略:snowflake算法
这些策略在实体类User中可以用@TableId注解设置。
@TableId(type = IdType.AUTO) //自增策略 private Long id;
其他的一些策略参考源码如下.
@Getter public enum IdType { /** * 数据库ID自增 */ AUTO(0), /** * 不设置主键生成策略 */ NONE(1), /** * 用户输入ID * 该类型可以通过自己注册自动填充插件进行填充 */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker),mp自带策略,生成19位随机数,数字类型使用这种策略 */ ID_WORKER(3), /** * 全局唯一ID (UUID) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示),mp自带策略,生成19位随机数,字符串类型使用这种策略 */ ID_WORKER_STR(5); private int key; IdType(int key) { this.key = key; } }