myBatisPlus-添加操作
添加过程
@Test
public void insert() {
User user = new User();
user.setName("BNTang");
user.setAge(23);
user.setEmail("303158131@qq.com");
int result = userMapper.insert(user);
// 影响的行数
System.out.println(result);
// iD 自增回填
System.out.println(user.getId());
}
主键自增需要配置
需要在创建数据表的时候设置主键自增,然后在实体字段中配置,在主键 id 属性上添加 @TableId(type = IdType.AUTO)
注解
主键策略
AUTO
数据库 ID 自增
弊端
分表的话, 每次要得到上一张表的最后一个值
表 | 数值 |
---|---|
第一张表 | 0 - 1000 |
第二张表 | 1001 - 2000 |
第三张表 | 2001 - 3000 |
UUID
- 全局唯一 ID
- 不方便排序
ID_WORKER
全局唯一 ID (idWorker)
mp 自带的策略,生成的是 19 位的整数
雪花算法
SnowFlake 算法,是 Twitter 开源的分布式 id 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 id。在分布式系统中的应用十分广泛,且 ID 引入了时间戳,基本上保持自增的,后面的代码中有详细的注解
- 使用
41bit
做为毫秒数 - 使用
10bit
做为机器的 id - 使用
10bit
做为毫秒内的流水号
ID_WORKER_STR
字符串全局唯一 ID (idWorker 的字符串表示)
NONE
该类型为未设置主键类型
INPUT
- 用户输入 ID
- 该类型可以通过自己注册自动填充插件进行填充
设置全局主键生成策略
修改 application.properties
mybatis-plus.global-config.db-config.id-type=auto