日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql表单自增id自定义规则,用LPAD/RPAD就够了

發布時間:2023/12/31 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql表单自增id自定义规则,用LPAD/RPAD就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天總結下我們業務經常會用到的一種情況:有時業務的表單單號都需要用唯一值來存儲和展示數據,一般我們可能會想到生成當前系統時間戳作為單號內容,每行數據的insert的時間都是不一樣的,都需要排隊一條條執行,所以可以用System類的currentTimeMillis方法獲取時間戳,這種取時間戳的方式效率最高;而當前業務需求是想制定比較簡單的單號格式,因為時間戳是一個數字串,對業務來說有點亂,而且過長,不方便閱讀,所以就定制了一種,以固定字符開頭+自增數字,例如:pro1,這里為了考慮問題單數量,這個數字我們應該要往左邊補0,多補幾位,如pro0000001,那么這種情況下,就可以用到LPAD函數了。注意這里的前綴pro,我們就需要在java接口中用拼接方法進行處理

?一、LPAD函數介紹

LPAD(str,len,padstr)函數將字符串padstr填充到str的左側,使字符串的長度達到len,然后返回字符串str.如果字符串str的長度大于len,則返回值被縮短至len字符長度。而還有一種是在右側填充,RPAD()函數,用法同理。

例如:

  • select LPAD(10,7,0);? ?//?0000010? ?

  • select LPAD("pro",7,0);? ?//?0000pro

  • select RPAD("pro",7,0);? ?//?pro0000

  • select RPAD(10,7,0);? ?//?1000000? ?

二、業務實現

1.dao層xml中進行自增ID獲取并設置固定位數

了解完函數的運用情況,接著我們再看看如何落地該需求功能。這里的單號可以拆分為兩部分,一部分是前綴,假設為字符串 pro,后綴則是固定位數的數值,自增+1,假設為 7位數,則第一個insert數據則為 0000001,第二個則為0000003(自增長度具體看數據庫設置,有些是自增步長為2),那我們的項目是自增步長為2。那這里有涉及到一個知識點,獲取自增ID,這里有一篇我之前寫的文章,通過自定義序列表與函數,進行調用函數取自增ID,我們通過該方案來獲取自增ID,然后再結合LAPD()函數,將自增ID的位數保持為固定位數,代碼如下:


dao.xml

<select id="getId" resultType="java.lang.String" useCache="false" flushCache="true"SELECT LPAD(SCHEMA.NEXTVAL(),7,0); </select>

?mapper.java

@Repository public interface IGetIdDao{public String getId(); }

?xml中通過調用數據庫中的NEXTVAL()自增ID函數,得到當前最新的ID值,再進行函數左補齊匹配。接下來就是在service層中調用dao層該接口進行前綴的拼接處理。有一點需要注意,一般springboot項目中都要開啟使用事務,而自增函數調用時,因為事務為提交,無法取到最新ID值,所以需要設置兩個Cache緩存參數進行清除,這樣就可在事務中取到最新ID需要設置兩個Cache緩存參數進行清除,這樣就可在事務中取到最新IDhttps://blog.csdn.net/studyday1/article/details/126470805?spm=1001.2014.3001.5502這里文章中也有說明,可訪問了解該機制。

2.service層調用接口得到后綴的固定位數的自增ID值,進行拼接

@Autowired private IGetIdDao iGetIdDao;public String getId(){return "pro"+iGetIdDao.getId(); //通過拼接得出最終業務表單所需樣式的單號數據 }

?總結:功能基本上涉及到 自增ID、LPAD函數的運用,以及事務導致的自增ID無法取到最新值需要設置清除緩存。

總結

以上是生活随笔為你收集整理的Mysql表单自增id自定义规则,用LPAD/RPAD就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。