ID生成器

ID Generator

需求

经常有这样的业务,生成“编号”,这个编号有一定的规则,比如合同编号: 以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


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