当前位置:首页 » 编程语言 » java流水号

java流水号

发布时间: 2023-08-28 10:50:24

java怎样自动生成流水号

方法一:

不用数据库的话弄个static个变量,自己设置个synchronized

示例:

importjava.text.DecimalFormat;
importjava.text.SimpleDateFormat;
importjava.util.Date;

publicclassPrimaryGenerater{

_NUMBER="XXXX";//流水号格式
=null;

privatePrimaryGenerater(){
}

/**
*取得PrimaryGenerater的单例实现
*
*@return
*/
(){
if(primaryGenerater==null){
synchronized(PrimaryGenerater.class){
if(primaryGenerater==null){
primaryGenerater=newPrimaryGenerater();
}
}
}
returnprimaryGenerater;
}

/**
*生成下一个编号
*/
(Stringsno){
Stringid=null;
Datedate=newDate();
SimpleDateFormatformatter=newSimpleDateFormat("yyyyMMdd");
if(sno==null){
id=formatter.format(date)+"0001";
}else{
intcount=SERIAL_NUMBER.length();
StringBuildersb=newStringBuilder();
for(inti=0;i<count;i++){
sb.append("0");
}
DecimalFormatdf=newDecimalFormat("0000");
id=formatter.format(date)
+df.format(1+Integer.parseInt(sno.substring(8,12)));
}
returnid;
}
}

方法二:

可以在数据库新建序列,再新建一个存储过程控制序列,返回序列值,比如sqlserver用identity,oracle用序列,存储过程可以加锁,当达到999999的时候重置序列,通过代码调用存储过程获得返回值。
2、全局变量。通过方法获取下一个值,方法同步。

❷ java怎么产生无重复的流水号!

希望对你有帮助!获取当前时间毫秒数,如果是单线程的话,一定无重复
一般这样在多线程并发中取到相同毫秒的概率都几乎为0,基本可以保证无重复

❸ java高性能订单流水号永远不重复8位数

8位数 也就是 1~99999999
然后你直接生成的随机数 校对数据库是否存在这个数,存在你就再次调用随机数,不存在你就用这个随机数,并且保存到数据库(注:不满8位,比如1,你就字符串拼接 00000001,再比如 79233 ,你拼接位00079233)

❹ java怎么生成一个一天内不会重复的20位流水号

我为您写了 一遍,望采纳。

packageZxing;

importjava.text.SimpleDateFormat;
importjava.util.Date;
importjava.util.Random;
/**
*
*开发公司:SOJSON在线工具<p>
*版权所有:©www.sojson.com
*博客地址:http://www.sojson.com/blog/
*<p>
*
*Demo
*
*<p>
*
*区分责任人日期说明<br/>
*创建周柏成2017年4月11日09:43<br/>
*
*@authorzhou-cheng
*@[email protected]
*@version1.0,2017年4月11日09:43<br/>
*
*/
publicclassDemo{

publicstaticvoidmain(String[]args){
//格式化当前时间
SimpleDateFormatsfDate=newSimpleDateFormat("yyyyMMddHHmmssSSS");
StringstrDate=sfDate.format(newDate());
//得到17位时间如:20170411094039080
System.out.println("时间17位:"+strDate);
//为了防止高并发重复,再获取3个随机数
Stringrandom=getRandom620(3);

//最后得到20位订单编号。
System.out.println("订单号20位:"+strDate+random);

}
/**
*获取6-10的随机位数数字
*@paramlength想要生成的长度
*@returnresult
*/
(Integerlength){
Stringresult="";
Randomrand=newRandom();
intn=20;
if(null!=length&&length>0){
n=length;
}
intrandInt=0;
for(inti=0;i<n;i++){
randInt=rand.nextInt(10);

result+=randInt;
}
returnresult;
}
}
热点内容
硬盘存储服务器怎么连接 发布:2025-02-04 10:00:55 浏览:27
javaip端口 发布:2025-02-04 09:27:09 浏览:857
国产存储科技进步二等奖 发布:2025-02-04 09:13:00 浏览:693
编程课v 发布:2025-02-04 08:45:00 浏览:108
模拟器能有手机脚本么 发布:2025-02-04 08:39:50 浏览:762
android显示html图片 发布:2025-02-04 08:35:31 浏览:795
如何查学信网账号及密码 发布:2025-02-04 08:33:55 浏览:506
linux32位jdk 发布:2025-02-04 08:33:55 浏览:250
康佳服务器连接失败是怎么回事 发布:2025-02-04 08:18:51 浏览:919
编译编译有什么 发布:2025-02-04 08:05:52 浏览:739