• 简单流水号生成


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

      

  • 相关阅读:
    requests
    Unit5 Going places
    Unit1 A time to remember
    SQL:找到一个关于all some any的用法,可在SSMS里看效果
    SQL join小结
    mac 配置tomcat
    oc与java c++语法区别
    swift调用oc项目
    java网络编程之socket
    windows远程控制mac
  • 原文地址:https://www.cnblogs.com/luxh/p/2687689.html
Copyright © 2020-2023  润新知