Java之String類型的有序Id批量生成器詳解
Java String類型的有序Id批量生成器
做項目的時候免不了對數(shù)據(jù)庫進行批量操作,比如說批量增加一批產(chǎn)品,批量增加一批工號。而這時候我們對于所增加的對象的自編號自然是不可能從頁面由客戶自己對一個個自編號進行手動輸入,這樣當(dāng)所需要的編號達到一定數(shù)值之后就會造成極大的負擔(dān)。但是將所需要增加的數(shù)量傳過來由工具自動生成就很棒了。
以下是一個Id批量生成器
有需要的朋友直接拿去用就可以了:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class IdGenerator {
private Long currentdbidscount;
private List<String> ids = new ArrayList<String>();
private String idpre;
private String yearstr;
private String idafter;
public IdGenerator() {
}
public Long getCurrentdbidscount() {
return currentdbidscount;
}
public void setCurrentdbidscount(Long currentdbidscount) {
this.currentdbidscount = currentdbidscount;
if (null == this.ids) {
this.ids = new ArrayList<String>();
}
}
public List<String> getIds() {
return ids;
}
public void setIds(List<String> ids) {
this.ids = ids;
}
public String getIdpre() {
return idpre;
}
public void setIdpre(String idpre) {
this.idpre = idpre;
}
public String getYearstr() {
return yearstr;
}
public void setYearstr(String yearstr) {
this.yearstr = yearstr;
}
public String getIdafter() {
return idafter;
}
public void setIdafter(String idafter) {
this.idafter = idafter;
}
public List<String> initIds(Long ocounts) {
for (int i = 0; i < ocounts; i++) {
this.ids.add(getIdPre() + yearStr() + getIdAfter(i));
}
return this.ids;
}
//
private String getIdAfter(int addcount) {
// 默認生成 xx1700001
//這里是數(shù)字部分長度
int goallength = 5;
//獲取數(shù)據(jù)庫縱向+1次循環(huán)(addcount)
int count = this.currentdbidscount.intValue() + 1 + addcount;
StringBuilder sBuilder = new StringBuilder("");
//計算與五位數(shù)的差值?
int length = goallength - new String(count + "").length();
for (int i = 0; i < length; i++) {
sBuilder.append("0");
}
sBuilder.append(count + "");
return sBuilder.toString();
}
private String getIdPre() {
// idpre==null?this.idpre="xx":this.idpre=idpre;
this.idpre = "Id-Hello-";
return this.idpre;
}
private String yearStr() {
Date currentdate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String yearstr = sdf.format(currentdate).substring(2, 4);
return yearstr;
}
public void clear() {
this.ids = null;
}
@Override
public String toString() {
return "IdGenerator [ids=" + ids + "]";
}
}
下面來看看我的測試效果

建議在哪里調(diào)用這個就把它寫成一個內(nèi)部類 。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring boot中@Conditional和spring boot的自動配置實例詳解
本文通過實例給大家介紹了Spring boot中@Conditional和spring boot的自動配置,需要的朋友可以參考下2018-05-05
java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段
這篇文章主要為大家詳細介紹了java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
Apache DolphinScheduler完全設(shè)置東八區(qū)時區(qū)
這篇文章主要為大家介紹了Apache DolphinScheduler完全設(shè)置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11

