Java之String類型的有序Id批量生成器詳解
Java String類型的有序Id批量生成器
做項(xiàng)目的時(shí)候免不了對(duì)數(shù)據(jù)庫(kù)進(jìn)行批量操作,比如說批量增加一批產(chǎn)品,批量增加一批工號(hào)。而這時(shí)候我們對(duì)于所增加的對(duì)象的自編號(hào)自然是不可能從頁面由客戶自己對(duì)一個(gè)個(gè)自編號(hào)進(jìn)行手動(dòng)輸入,這樣當(dāng)所需要的編號(hào)達(dá)到一定數(shù)值之后就會(huì)造成極大的負(fù)擔(dān)。但是將所需要增加的數(shù)量傳過來由工具自動(dòng)生成就很棒了。
以下是一個(gè)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) {
// 默認(rèn)生成 xx1700001
//這里是數(shù)字部分長(zhǎng)度
int goallength = 5;
//獲取數(shù)據(jù)庫(kù)縱向+1次循環(huán)(addcount)
int count = this.currentdbidscount.intValue() + 1 + addcount;
StringBuilder sBuilder = new StringBuilder("");
//計(jì)算與五位數(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 + "]";
}
}
下面來看看我的測(cè)試效果

建議在哪里調(diào)用這個(gè)就把它寫成一個(gè)內(nèi)部類 。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中反射reflect的基礎(chǔ)知識(shí)講解
這篇文章主要介紹了Java中反射reflect的基礎(chǔ)知識(shí)講解,Java中的反射,它算是Java當(dāng)中非常底層的一個(gè)技術(shù),平時(shí)我們我們用得不多,實(shí)際上它也的確非常復(fù)雜同時(shí)也難以理解,但是涉及到底層的東西Java都給我們封裝好了,我們直接拿來調(diào)用即可,需要的朋友可以參考下2023-10-10
Spring boot中@Conditional和spring boot的自動(dòng)配置實(shí)例詳解
本文通過實(shí)例給大家介紹了Spring boot中@Conditional和spring boot的自動(dòng)配置,需要的朋友可以參考下2018-05-05
java并發(fā)訪問重復(fù)請(qǐng)求過濾問題
本篇文章給大家分享了關(guān)于java并發(fā)訪問重復(fù)請(qǐng)求過濾的相關(guān)問題以及解決方法,對(duì)此有需要的朋友參考學(xué)習(xí)下。2018-05-05
java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段
這篇文章主要為大家詳細(xì)介紹了java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
Apache DolphinScheduler完全設(shè)置東八區(qū)時(shí)區(qū)
這篇文章主要為大家介紹了Apache DolphinScheduler完全設(shè)置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11

