Java生成唯一性ID示例代码

用户ID首先生成,订单ID的生成可依赖用户ID。

下面代码前六位是日期,后八位是随机数,用于生成用户ID。

 1     public String getNewUserId() {
 2         String ipAddress = "";
 3         try {
 4             //获取服务器IP地址
 5             ipAddress = InetAddress.getLocalHost().getHostAddress();
 6         } catch (Exception e) {
 7             logger.error("getNewUserId=" + e.getMessage());
 8         }
 9         //获取UUID
10         String uuid = ipAddress + "$" + UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
11         //生成后缀
12         long suffix = Math.abs(uuid.hashCode() % 100000000);
13         SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
14         String time = sdf.format(new Date(System.currentTimeMillis()));
15         //生成前缀
16         long prefix = Long.parseLong(time) * 100000000;
17         String userId = String.valueOf(prefix + suffix);
18         return userId;
19     }

接下来的订单ID就可以随意点了,可添加自定义前缀等。

1     public String buildOrderIdByUserId(String userId) {
2         SimpleDateFormat df = new SimpleDateFormat("yyMMddHHmmss");
3         String time = df.format(new Date());
4         Random random = new Random();
5         int randomNum = random.nextInt(999) % 900 + 100;
6         StringBuilder sb = new StringBuilder("ZMM");
7         return sb.append(time).append(userId).append(randomNum).toString();
8     }

如果还有相应的月份分表,之后就可以根据用户ID得到该用户所在月表,根据该订单得到该订单所在月表,直接截取相应ID的固定位置即可

比如:

1     public String getMonthByOrderId(String orderId) {
2         return "20" + orderId.substring(3, 7);
3     }

补充一个博客,介绍唯一性ID的,可以了解一下:https://www.cnblogs.com/haoxinyue/p/5208136.html

猜你喜欢

转载自www.cnblogs.com/wbxk/p/9559531.html
今日推荐