自动增长策略: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;
}
} 
京公网安备 11010502036488号