ID生成器

9/7/2021

# 需求

经常有这样的业务,生成“编号”,这个编号有一定的规则,比如合同编号: 以HT开头,然后跟年月日,最后从1开始增长,如下:

HT2019110100001 HT2019110100002 HT2019110100003

而且有些是以月为单位,以年为单位等等

# SmartAdmin的IdGenerator

# 规则

使用 [yyyy][mm][dd][nnnnn] 格式开配置生成器,其中:

yyyy 表示年 mm 表示月 dd 表示天 nnn 表示数字,几个n就表示几位 如上需求: HT[yyyy][mm][dd][nnnn]

# 循环

对于[nnnn]部分,系统提供四种增长周期: 请看:dGeneratorRuleTypeEnum 类

NO_CYCLE 一直增长 YEAR_CYCLE 以年为单位,跨年会重新从0开始 MONTH_CYCLE 以月为单位,跨月会重新从0开始 MONTH_CYCLE 以日为单位,跨日会重新从0开始

#

定义表:t_id_generator 记录表:t_id_generator_record

# 代码

java代码包: net.1024lab.smartadmin.module.idgenerator

# 实现

IdGeneratorService 负责批量生成具体的id集合 IdGeneratorManager 负责提交事务,更新t_id_generatort_id_generator_record两个表 IdGeneratorDao 负责更新db


作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。

加“卓大”微信,入群 关注 1024创新实验室! 我要请 1024创新实验室 喝胡辣汤~
告白气球 (钢琴版)
JESSE T