當前位置:首頁 » 編程語言 » java的生成流水號

java的生成流水號

發布時間: 2022-05-15 06:17:21

java怎麼自動生成訂單流水號

看想要哪種類型的流水號
只要數字的,可以用
系統毫秒+用戶id
生成
流水號,這能保證唯一(同一個用戶同一毫秒只能發其一次流水號申請)
如果可以帶字母的,就用java
自帶的
生成uuid
類,生成一個

⑵ 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生成流水號 200+當前時間+0001 200+當前時間+0002 到了每年的1月1號流水號重新從0001開始

在資料庫里創建一個序列,每次到資料庫里取一次值再拼成流水號。每年一月把序列重置為0

⑷ 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;
}
}

⑸ java怎麼產生無重復的流水號!

希望對你有幫助!獲取當前時間毫秒數,如果是單線程的話,一定無重復
一般這樣在多線程並發中取到相同毫秒的概率都幾乎為0,基本可以保證無重復

⑹ java高性能訂單流水號永遠不重復8位數

8位數 也就是 1~99999999
然後你直接生成的隨機數 校對資料庫是否存在這個數,存在你就再次調用隨機數,不存在你就用這個隨機數,並且保存到資料庫(註:不滿8位,比如1,你就字元串拼接 00000001,再比如 79233 ,你拼接位00079233)

⑺ java 生成流水號為什麼不使用sequence

sequence
是資料庫級別的流水號
java生成流水號一般都用uuid生成32位的ID值,確保不會重復。

⑻ java實現自動生成流水號的方法

public
static
String
getOrderNo(){
long
No
=
0;
SimpleDateFormat
sdf
=
new
SimpleDateFormat("yyyyMMdd");
String
nowdate
=
sdf.format(new
Date());
No
=
Long.parseLong(nowdate)*1000;//這里如果一天訂單多的話可以用一萬或更大
No+=getNo();
return
getUserId+No;
}
public
static
int
getNo(){//返回當天的訂單數+1
return
001;
}
public
static
String
getUserId(){
return
"123";
}
用System.out.print(getOrderNo());測試得到:12320060307001
一般訂單號用這樣還不錯吧。呵呵

⑼ java高並發中業務流水號怎麼實現的

產生流水號的都是用資料庫的序列
直接觸發,任何並發都沒有影響的

熱點內容
內網搭建ftp伺服器 發布:2024-04-25 15:35:26 瀏覽:968
伺服器硬體搭建 發布:2024-04-25 15:33:49 瀏覽:791
騰訊招聘php 發布:2024-04-25 15:17:02 瀏覽:444
雲伺服器多個公網ip搭建 發布:2024-04-25 15:13:15 瀏覽:845
phpmysqlupdate 發布:2024-04-25 15:08:15 瀏覽:253
隨時解壓 發布:2024-04-25 14:58:11 瀏覽:68
三率源碼 發布:2024-04-25 14:42:41 瀏覽:468
javastring轉string數組 發布:2024-04-25 14:42:10 瀏覽:137
飢荒如何更改密碼 發布:2024-04-25 14:42:02 瀏覽:744
百度雲如何解壓zip 發布:2024-04-25 14:38:57 瀏覽:571