自动生成编号,id,序号,采用不同策略生成
各种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 }
欢迎评论,一起学习,对大家有用请点个赞。