各種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 }
歡迎大家一起說出自己的想法。