Java生成日期+xxx唯一流水号:自增策略与时间戳处理

2星 需积分: 44 290 下载量 144 浏览量 更新于2024-09-12 4 收藏 2KB TXT 举报
在Java开发中,一个常见的需求是生成具有日期和唯一标识的流水号,例如形如"20131210001"。这个任务通常用于给上传的文件分配一个唯一的ID,确保每条记录的标识都是唯一的,且每天的ID按照特定顺序递增。在这个场景中,开发者实现了一个名为`getMaxId`的方法来生成这样的ID。 首先,方法通过连接数据库获取最新的`MST_SCMFILE_INFORMATION`表中的`FILEID`(假设为文件ID字段)。使用`SimpleDateFormat`对当前日期进行格式化,得到一个字符串如"yyyyMMdd",然后拼接到固定的"001"形成初始的流水号,例如"20131210001"。 接着,代码检查是否已经存在一个记录。如果`FILEID`为空,那么直接返回`lastNo`作为新的流水号;如果`lastNo`的前八位数字小于当天生成的日期字符串的前八位,说明新的一天开始,可以直接返回`lastNo`。否则,比较两个数字,如果当前最大ID的后三位(即流水号部分)大于或等于1,并且小于`lastNo`的后三位,说明需要生成一个新的流水号。这里使用了`substring`方法截取并转换字符串为整数进行比较。 为了确保连续性,方法使用`StringBuffer`来构建新的流水号。它首先从`lastNo`中取出后三位(即当天的最大ID),然后检查这个数值是否需要递增。如果需要递增,会在当前日期的后三位基础上加1。这样就确保了每天的流水号按照顺序增长,而不会出现重复。 这个`getMaxId`方法的核心逻辑是基于日期和数据库中的最大ID值来生成下一个流水号,通过比较和处理日期字符串,以及与已有最大ID的后三位数字,实现了日期+三位递增编号的流水号生成规则。这在Java编程中是一种常见的序列生成策略,特别是在需要给数据库记录添加唯一标识符的场景下。