測試插入:
//測試插入 @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字符串表示法
}