Skip to content

序列生成

模块集成

依赖

xml
<dependency>
    <groupId>com.wkclz.micro</groupId>
    <artifactId>micro-seq</artifactId>
    <version>${latest.version}</version>
</dependency>

表结构

sql
CREATE TABLE `mdm_sequence` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `prefix` varchar(31) DEFAULT 'SEQ' COMMENT '字典分类',
  `sequence` int NOT NULL DEFAULT '0' COMMENT '当前序列',
  `code_length` int NOT NULL DEFAULT '4' COMMENT '序列长度(不计长度)',
  `sort` int NOT NULL DEFAULT '0' COMMENT '排序',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `create_by` varchar(31) DEFAULT NULL COMMENT '创建人',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `update_by` varchar(31) DEFAULT NULL COMMENT '更新人',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `version` int NOT NULL DEFAULT '0' COMMENT '版本号',
  `status` bigint unsigned NOT NULL DEFAULT '1' COMMENT 'status',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `prefix` (`prefix`) USING BTREE
) ENGINE=InnoDB COMMENT='序列生成记录';

界面

功能使用

java
public class SeqDemo {
  @Autowired
  private SeqApi seqAPi;

  public void test() {
    // 生成单个
    String seq = seqAPi.genSequence("PREFIX");
    // 生成单个,指定长度
    String seq = seqAPi.genSequence("PREFIX", 4);
    // 生成多个
    String seq = seqAPi.genSequences("PREFIX", 2);
    // 生成多个,指定长度
    String seq = seqAPi.genSequences("PREFIX", 2, 4);
  }

}

使用注意

  • PREFIX 不存在时,首次调用将会自动生成从1开始的序列
  • 指定长度,只在首次生成一个前缀的序列产生。若后期需要改变,需要从管理页面改变
  • 为保证序列生成的统一性,此生成工具牺牲了性能来保唯一
  • 此工具适合序列可读性敏感的需求的生成,且全局的序列要求不多的场景 (建议只用在4位数以内)
  • 若需要大量的序列生成,建议使用 RedisIdGenHelper

Released under the MIT License.