项目中有这样的需求每天从开始生成位的流水号比如年月日……到年月日又从开始而且系统重启后依然需要保持流水性重启前是那么重启后需要从开始 选择的一个方案就是将流水号保存到数据库 流水号实体 /** * 流水号 * @author Luxh * */public class SerialNumber { private String id; /** * 流水号 */ private Integer serialNo; /** * 生成日期(格式yyyyMMdd) */ private String generateDate; //getter/setter方法 //…} 流水号实体对应的数据表 生成流水号的程序 /** * 生成流水号 * @return */ public String generateSerialNumber() { //当天的初始化流水号为 Integer serialNo = ; //查询当天的下一个流水号 String hql = SELECT max(tserialNo+) FROM SerialNumber t WHERE tgenerateDate=?; String generateDate = DateUtilsformatDate(new Date() yyyyMMdd) Object obj = sessioncreateQuery(hql)setParameter( generateDate)uniqueResult() if(obj != null) { serialNo = (Integer) obj; } //将当前序列号保存到数据库 SerialNumber sn = new SerialNumber() snsetSerialNo(serialNo) snsetGenerateDate(generateDate) sessionsave(sn) //将流水号格式化为 位长度返回 return Stringformat(%d serialNo) } |