自动增长策略: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;
    }
}