zoukankan      html  css  js  c++  java
  • 简单流水号生成

      项目中有这样的需求:每天从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);
        }

      

  • 相关阅读:
    如何提升程序员的工作效率?
    MacOS 上网络故障诊断
    阅读混淆过的Android代码的确不易
    复旦投毒案落下帷幕
    正确把握深度和广度
    Freemarker的数据模型使用
    xilink se14.7 win10闪退
    浅谈 pid的原理与差异
    win10系统激活
    stm8 同时使用dac和adc 采集异常,电平异常
  • 原文地址:https://www.cnblogs.com/luxh/p/2687689.html
Copyright © 2011-2022 走看看