xianligong 发表于 2019-1-8 10:03

刚开始学习一个编码自增代码

public static void main(String[] args) {
               String Orderno = null;
                String maxOrderno = "NO201808300003"; // 从数据库查询出的最大编号
                System.out.println("maxOrderno=" + maxOrderno);
                SimpleDateFormat format = new SimpleDateFormat("yyyy"); // 时间字符串产生方式yyyyMMdd
                String uid_pfix = "NO" + format.format(new Date()); // 组合流水号前一部分,NO+时间字符串,如:NO20160126
                System.out.println("time=" + format.format(new Date()));
                if (maxOrderno != null && maxOrderno.contains(uid_pfix)) {
                    String uid_end = maxOrderno.substring(10, 14); // 截取字符串最后四位,结果:0001
                    System.out.println("uid_end=" + uid_end);
                    int endNum = Integer.parseInt(uid_end); // 把String类型的0001转化为int类型的1
                    System.out.println("endNum=" + endNum);
                    int tmpNum = 10000 + endNum + 1; // 结果10002
                    System.out.println("tmpNum=" + tmpNum);
                    Orderno = uid_pfix + Tools.subStr("" + tmpNum, 1);// 把10002首位的1去掉,再拼成NO201601260002字符串
                } else {
                    Orderno = uid_pfix + "0001";
                }
                System.out.println(Orderno);
        }

nygula 发表于 2019-1-8 10:54

为什么不用存储过程.如果并发两个查询都查到NO201808300003怎么办

oneofzero 发表于 2019-1-11 17:27

多谢楼主分享

reeye 发表于 2019-2-21 18:23

哈哈, 一看代码就知道是个java新手. 加油哦

神秘来宾 发表于 2019-2-21 19:06

楼主比我厉害多了

seedhk 发表于 2019-2-22 10:50

尽量别用存储过程吧..这玩意写起来累 看起来更累

liangyun 发表于 2019-3-8 15:52

把NO去掉再加一不行吗{:1_904:}
页: [1]
查看完整版本: 刚开始学习一个编码自增代码