mybatisplus----CRUD操作之插入操作,及主鍵自增策略(雪花演算法簡述)
阿新 • • 發佈:2020-11-13
測試插入:
//測試插入 @Test void testInsert(){ User user=new User(); user.setAge(3); user.setEmail("[email protected]"); // 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字串表示法
}