流水单号产生方法
引用:http://www.54xue.com/w/42/n-31442.html
項目中有這樣的需求:每天從00001開始生成5位的流水號,比如2012年9月16日,00001、00002、……99999,到2012年9月17日,又從00001開始。而且系統重啟后依然需要保持流水性,重啟前是00012,那么重啟后需要從00013開始。
????
??? 選擇的一個方案就是將流水號保存到數據庫。
????
??? 1、流水號實體
????
??? /** * 流水號 * @author Luxh * 2012-9-16 */public class SerialNumber {
????
??? private String id;
????
??? /**
????
??? * 流水號
????
??? */
????
??? private Integer serialNo;
????
??? /**
????
??? * 生成日期(格式:yyyyMMdd)
????
??? */
????
??? private String generateDate;
????
??? //getter/setter方法
????
??? //…}
????
??? 2、流水號實體對應的數據表
??? 3、生成流水號的程序
????
??? /**
????
??? * 生成流水號
????
??? * @return
????
??? */
????
??? public String generateSerialNumber() {
????
??? //當天的初始化流水號為1
????
??? Integer serialNo = 1;
????
??? //查詢當天的下一個流水號
????
??? String hql = “SELECT max(t.serialNo+1) FROM SerialNumber t WHERE t.generateDate=?”;
????
??? String generateDate = DateUtils.formatDate(new Date(), “yyyyMMdd”);
????
??? Object obj = session.createQuery(hql)。setParameter(0, generateDate)。uniqueResult();
????
??? if(obj != null) {
????
??? serialNo = (Integer) obj;
????
??? }
????
??? //將當前序列號保存到數據庫
????
??? SerialNumber sn = new SerialNumber();
????
??? sn.setSerialNo(serialNo);
????
??? sn.setGenerateDate(generateDate);
????
??? session.save(sn);
????
??? //將流水號格式化為 “00001”? 5位長度返回
????
??? return String.format(“%05d”, serialNo);
????
??? }
轉載于:https://www.cnblogs.com/sode/archive/2012/09/26/2704653.html
總結
- 上一篇: 用.NET SqlBulkCopy类执行
- 下一篇: SQL SERVER 数据库清空语句 忽