刚开始学习一个编码自增代码
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);
} 为什么不用存储过程.如果并发两个查询都查到NO201808300003怎么办 多谢楼主分享 哈哈, 一看代码就知道是个java新手. 加油哦 楼主比我厉害多了 尽量别用存储过程吧..这玩意写起来累 看起来更累
把NO去掉再加一不行吗{:1_904:}
页:
[1]