Mybatis-Plus 插入测试、雪花算法及不同主键自增策略

插入用户(测试)

    @Test
    void insert() {
        // 插入用户
        User user = new User();
        user.setAge(111);
        user.setName("小学生");
        user.setEmail("[email protected]");
        int insert = userMapper.insert(user);
        System.out.println(insert);
    }

测试结果:

Mybatis-Plus 插入测试、雪花算法及不同主键自增策略_第1张图片

数据库插入的id为全局默认的id(ID_WORKER) 

雪花算法 

Mybatis-Plus 插入测试、雪花算法及不同主键自增策略_第2张图片

 所有生成的id按时间趋势递增 整个分布式系统内不会产生重复id(因为有datacenterId和workerId来做区分)

id 上添加 @TableId(type = IdType.ID_WORKER) 

package com.jia.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor

public class User {
    // 对应数据库中的主键(uuid,自增id,雪花算法,redis,zookeeper)
    @TableId(type = IdType.ID_WORKER)
    private Long id;
    private String name;
    private int age;
    private String email;
}

数据库插入的唯一 id 默认值:ID_WORKER

主键自增 

1.实体类字段上的 @TableId(type = IdType.AUTO)

2.数据库字段一定要是自增

其他的源码解释

public enum IdType {
    AUTO(0),             // 数据库 id 自增
    NONE(1),             // 未设置主键
    INPUT(2),            // 手动输入
    ID_WORKER(3),        // 默认的全局 id
    UUID(4),             // 全局唯一 id  (uuid)
    ID_WORKER_STR(5);    // ID_WORKER 字符串表示法
}

 

你可能感兴趣的:(Mybatis-Plus)