java模拟生成订单号
时间: 2024-09-21 21:11:14 浏览: 40
在Java中,模拟生成订单号通常会采用一种组合字符串的方式来创建唯一标识符,常用的做法有以下几种:
1. **日期+序列**:可以将当前时间戳转换成日期字符串加上自增的序列号,如"YYYYMMDDHHMMSS+nnn",这样每天都会有新的订单号。
```java
import java.text.SimpleDateFormat;
import java.util.Date;
public class OrderNumberGenerator {
private SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
private int sequence = 0;
public String generate() {
synchronized (this) {
sequence++;
return formatter.format(new Date()) + sequence;
}
}
}
```
2. **UUID**: 使用Java内置的`java.util.UUID`类生成全局唯一的ID,如果需要更短的字符串形式,可以用`toString()`方法去掉版本信息。
```java
import java.util.UUID;
public class OrderNumberGenerator {
public String generate() {
UUID uuid = UUID.randomUUID();
return uuid.toString().replaceAll("-", "");
}
}
```
3. **数据库递增**: 如果应用中有数据库存储,可以直接从数据库获取序列号,并在其基础上加一,这种方式适合于高并发场景。
```java
// 这里假设有一个名为order_seq的表,每次插入新订单自动增加
public class OrderNumberGenerator {
public String generate() {
// 假设connection是连接数据库的对象
long seq = connection.queryForNextSequence("SELECT sequence FROM order_seq ORDER BY sequence LIMIT 1 OFFSET ? FOR UPDATE", 0);
seq++;
connection.updateSequence(seq, "order_seq");
return Long.toString(seq);
}
}
```
阅读全文