工具類 生成主鍵id

2021-07-29 18:43:33 字數 837 閱讀 5323

private static int sequence = 0;  

private static int length = 6;

/**

* yyyymmddhhmmss+6位自增長碼(20位)

* 2023年6月29日下午1:25:23

* @return

*/

public static synchronized string getlocaltrmseqnum()

/**

* 左填0

* 2023年6月29日下午1:24:32

* @param s

* @param length

* @return

*/

public static string addleftzero(string s, int length)

int lim = c.length - x.length;

for (int i = 0; i < lim; i++)

system.arraycopy(x, 0, c, lim, x.length);

return new string(c);

} return s.substring(0, length);

}

由於生成訂單id、商品id 或者什麼什麼id的,不想用自增,又怕重複,於是就用  年與日時分秒 + 6位自增碼 (共計20位長度)來當作id

注意:如果你的id是long型,就要注意,long的最大長度為19位,如果直接轉的話會有問題,建議改為年月日時分秒+5位隨機數

主鍵 id 生成策略

1 資料庫自動增長 auto increment 優點 簡單方便 數字id天然排序,對分頁或結果需要排序很有幫助 缺點 不同資料庫語法和實現不同,資料庫遷移的時候或多版本支援的時候需要處理 在單個資料庫或讀寫分離或一主多從的情況下,只有乙個主庫可以生成,有單點故障的風險 比較難於擴充套件 分庫分表比...

hibernate生成主鍵id的配置

1 identity 用於mysql資料庫。特點 遞增 注 對於mysql資料 庫使用遞增序列時需要在建表時對主鍵指定為auto increment屬性。2 sequence 用於oracle資料庫 序列 名 3 native 跨資料庫時使用,由底層方言產生。default.sequence為hib...

Oracle唯一主鍵ID的生成

一般常用的方法有兩者,使用sequence和使用sys guid 方法一 1.建立序列sequence create sequence create sequence seq id minvalue 1 maxvalue 99999999 start with 6106 increment by 1...