小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
插入操作
insert
//测试插入
@Test
public void testInsert(){
User user = new User();
user.setName("xxx");
user.setAge(3);
user.setEmail("[email protected]");
int result = userMapper.insert(user);//帮我们自动生成id
System.out.println(result);//受影响的行数
System.out.println(user);//发现,id会自动生成
}
复制代码
数据库插入的id的默认值:全局的唯一id
主键生成策略
默认ID_WORKER全局唯一id
分布式系统唯一id生成: www.cnblogs.com/haoxinyue/p…
雪花算法:
nowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0。可以保证全球唯一
主键自增
我们需要配置主键自增
1、实体类字段上 @TableId(type = IdType.AUTO )
2、数据库字段一定要是自增的
3,测试
其余的源码解释
AUTO(0),//数据库id自增
NONE(1),//未设置主键
INPUT(2),//手动输入
ID_WORKER的字符串表示法(3),//默认的全局id
UUID(4),//全局的唯一id
ID_WORKER_STR(5);// ID_WORKER的字符串表示法
复制代码
user.setId(6L);//输入id
@TableId(type = IdType.INPUT )
复制代码