# id-generator **Repository Path**: wss-meng/id-generator ## Basic Information - **Project Name**: id-generator - **Description**: No description available - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-12-15 - **Last Updated**: 2023-06-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: ID生成器 ## README #id生成器 ## 介绍 > 1. 修改自https://github.com/didi/tinyid > > 2. 基于数据库号段生成id ## 使用 ### 引入依赖 ```xml org.garden id-generator 1.0.0 ``` ### 添加id.properties配置文件 ```properties # 配置数据库信息 id.datasource.username=username id.datasource.password=password id.datasource.driver-class-name=com.mysql.cj.jdbc.Driver id.datasource.url=url id.retry=3 #加载数据库重试次数 id.load-percent=30 #id已使用的比例,达到后加载下一区间号段 ``` ### 实际使用 ```java public class IdTest { @Test public void getId() { // 每种id的业务类型 String businessType = "user"; Long id = Id.nextId(businessType); } } ``` ### 初始化sql ```sql CREATE TABLE `id_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键', `business_type` varchar(63) NOT NULL DEFAULT '' COMMENT '业务类型,唯一', `begin_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '开始id,仅记录初始值,无其他含义。初始化时begin_id和max_id应相同', `max_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '当前最大id', `step` int(11) DEFAULT '1000' COMMENT '每次加载的步长', `delta` int(11) NOT NULL DEFAULT '1' COMMENT '每次id增量', `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `version` bigint(20) NOT NULL DEFAULT '0' COMMENT '版本号', PRIMARY KEY (`id`), UNIQUE KEY `unique_business_type` (`business_type`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT 'id配置表'; ```