# 需求
经常有这样的业务,生成“编号”,这个编号有一定的规则,比如合同编号: 以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_generator
和t_id_generator_record
两个表
IdGeneratorDao 负责更新db
作者简介: 卓大 (opens new window), 1024创新实验室主任,混迹于各个技术圈,熟悉点java,略懂点前端。
![]() | ![]() | ![]() |
加“卓大”微信,入群 | 关注 1024创新实验室! | 我要请 1024创新实验室 喝胡辣汤~ |