各種id生成策略
1:隨機編號
1 public static String genImageName() { 2 //取當前時間的長整形值包含毫秒 3 long millis = System.currentTimeMillis(); 4 //加上三位隨機數 5 Random random = new Random(); 6 int end3 = random.nextInt(999);//該方法的作用是生成一個隨機的int值,該值介於[0,n]的區間,也就是0到n之間的隨機int值,包含0而不包含n。 7 //如果不足三位前面補0 String.format("%03d", end3); 3代表要獲得的總長度,0代表傳入的參數不夠的時候會用0作為填充,d會被傳入的參數替代 8 String str = millis + String.format("%03d", end3); 9 return str; 10 }
也可以根據需要在str的前面拼接上前綴:
2:流水編號
1 public static String getstr(){ 2 String Orderno = null; 3 String maxOrderno = "NO201601270001"; // 從數據庫查詢出的最大編號 4 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); // 時間字符串產生方式 5 String uid_pfix = "NO" + format.format(new Date()); // 組合流水號前一部分,NO+時間字符串,如:NO20160126 6 if (maxOrderno != null && maxOrderno.contains(uid_pfix)) { 7 String uid_end = maxOrderno.substring(10, 14); // 截取字符串最后四位,結果:0001 8 System.out.println("uid_end=" + uid_end); 9 int endNum = Integer.parseInt(uid_end); // 把String類型的0001轉化為int類型的1 10 System.out.println("endNum=" + endNum); 11 int tmpNum = 10000 + endNum + 1; // 結果10002 12 System.out.println("tmpNum=" + tmpNum); 13 Orderno = uid_pfix +subStr("" + tmpNum, 1);// 把10002首位的1去掉,再拼成NO201601260002字符串 14 } else { 15 Orderno = uid_pfix + "0001"; 16 } 17 return Orderno; 18 } 19 20 public static String subStr(String str, int start) { 21 if (str == null || str.equals("") || str.length() == 0) 22 return ""; 23 if (start < str.length()) { 24 return str.substring(start); 25 } else { 26 return ""; 27 } 28 }
3:uuid獲取
1 /*UUID.randomUUID().toString()是javaJDK提供的一個自動生成主鍵的方法。 2 * UUID(Universally Unique Identifier)全局唯一標識符,是指在一台機器上生成的數字, 3 * 它保證對在同一時空中的所有機器都是唯一的,是由一個十六位的數字組成,表現出來的形式。 4 * 由以下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后, 5 * 過幾秒又生成一個UUID,則第一個部分不同,其余相同),時鍾序列,全局唯一的IEEE機器識別號 6 * (如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在於生成的結果串會比較長。 7 * */ 8 public static String getUUID() { 9 return UUID.randomUUID().toString().replace("-",""); 10 }