测试插入:
//测试插入 @Test void testInsert(){ User user=new User(); user.setAge(3); user.setEmail("269805365@qq.com"); // user.setId(); 我们故意不进行设置id,我们会发现会自动生成id user.setName("yfsn"); int insert = userMapper.insert(user); System.out.println(insert); System.out.println(user);//经过输出我们会发现,自动设置id之后这个id会回填的我们的java对象中 }
结果:
数据库插入的id的默认值为:全局的唯一id
主键生成策略
默认ID_WORKER全局唯-id
分布式系统唯-id生成
雪花算法:snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID,其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。
主键自增
我们需要配置主键自增:
1、体段上Tablerd(type-IdType.AUTO)
2、数据库字段一定要是自增!
再次测试:
关于@TableId注解type值的其他参数解释
其与的源码解释
public enum IdType{
AUTO(0),//数据库id自增NONE(1),//未设置主键
INPUT(2),//手动输入
ID-WORKER(3),//默认的全局唯一id
UUID(4),//全局唯-id uuid ID WORKERSTRI5);//ID_WORKER字符串表示法
}