// 初始化数据
List<Requirement> reqTemp = new ArrayList<Requirement>();
for (Requirement req : reqList) {
req.setReqId(StrUtil.numberUUID());
req.setCreateDate(new Date());
req.setUpdateDate(new Date());
req.setIsSoftDel("1");
reqTemp.add(req);
public static String numberUUID() {
String numTemp = String.valueOf(System.currentTimeMillis());
return numTemp;
}
List<Requirement> reqTemp = new ArrayList<Requirement>();
for (Requirement req : reqList) {
req.setReqId(StrUtil.numberUUID());
req.setCreateDate(new Date());
req.setUpdateDate(new Date());
req.setIsSoftDel("1");
req.setReqLevel(getLevel(req.getReqLevel()));
req.setReqPerson(
this.getUserId(req.getReqPerson()));reqTemp.add(req);
}
public static String numberUUID() {
String numTemp = String.valueOf(System.currentTimeMillis());
return numTemp;
}
该成静态资源后依旧不行:
public String strUUID() {
return String.valueOf(System.currentTimeMillis());
}
我们的主键生成机制是想用系统执行的当前时间点,所以用了System.currentTimeMillis的方法。以为用户在某一个毫秒时间点上不会有两个人同时操作。
今天做批量插入时,发现在一个循环里面,一毫秒是可以做完上述的几步操作的,现在的计算机运算速度真的让人汗颜呀。
后来还是不想放弃用时间点来做操作,查找jdk-1.6 api后发现还有一个System.nanoTime的方法,可以精确到纳秒。预先在控制台上运行发现还是会有重复,NND。看来只能用UUID.randomUUID了。
所以告诫一下,各位开发同仁,如果用自我主键(程序控制),要力减主键作用域,缩小主键的使用范围。从而达到数据的唯一性。