insert插入
//测试插入
@Test
public void testInsert(){
User user = new User();
user.setName("小默");
user.setAge(3);
user.setEmail("1075758830@qq.com");
int result = userMapper.insert(user);//自动生产id
System.out.println(result);//受影响的行数
System.out.println(user);//id会自动回填
}
}
数据库插入的id默认值为:全局唯一的id
主键生成策略
默认ID_WORKER全局唯一id 已经过时
改用 @TableId(type = IdType.ASSIGN_ID)
分布式系统唯一id生成:分布式系统唯一ID生成方案汇总 - nick hao - 博客园 (cnblogs.com)
雪花算法:
snowflake是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),//手动输入
ASSIGN_ID(3),//雪花算法id
ASSIGN_UUID(4);//全局唯一id uuid