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-10Spring boot中@Conditional和spring boot的自動(dòng)配置實(shí)例詳解
本文通過實(shí)例給大家介紹了Spring boot中@Conditional和spring boot的自動(dòng)配置,需要的朋友可以參考下2018-05-05java并發(fā)訪問重復(fù)請(qǐng)求過濾問題
本篇文章給大家分享了關(guān)于java并發(fā)訪問重復(fù)請(qǐng)求過濾的相關(guān)問題以及解決方法,對(duì)此有需要的朋友參考學(xué)習(xí)下。2018-05-05java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段
這篇文章主要為大家詳細(xì)介紹了java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Apache DolphinScheduler完全設(shè)置東八區(qū)時(shí)區(qū)
這篇文章主要為大家介紹了Apache DolphinScheduler完全設(shè)置東八區(qū)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11