一,测试
/*
* 插入测试
* */
@Test
public void test01() {
User user = new User();
/*
* 自动帮我们生成id
* */
user.setName("kuku");
user.setAge(3);
user.setEmail("2983394967@qq.com");
final int insert = mapper.insert(user);
System.out.println(insert);
/*
* 发现id会自动回填
* */
System.out.println(user);
}
数据库id并没有设置id
二, 什么是雪花算法(数据库插入的id默认值为:全局唯一id)
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心(北京,上海等),5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。具体实现的代码可以参看https://github.com/twitter/snowflake。雪花算法支持的TPS可以达到419万左右(2^22*1000)
三,mybatis-plus提供的主键策略
AUTO(0), // 自增,同时需要数据库中也配置自增
NONE(1), // 该类型为未设置主键类型
INPUT(2), // 用户输入,和数据库中类型保持一致即可
ASSIGN_ID(3), // 雪花算法,全局唯一id,数据库中类型必须为数值类型
ASSIGN_UUID(4); // 全局唯一uuid
说明:在新版的mybatis-plus中,主键策略默认为NONE,也就是使用雪花算法,同时取消了ID_WORKER_STR(5);
user类
在主键上使用@TableId(type = IdType.AUTO)
,然后根据需要修改type即可
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
@TableId(type = IdType.AUTO)
private Long id; // 必须是Long,得是long的包装类才能自动生成
private String name;
private int age;
private String email;
}
也可以使用配置文件进行配置
#配置自增
mybatis-plus.global-config.db-config.id-type=auto