主要是基于github上的一个开源id生成框架。
引入依赖:
com.github.bingoohuang
idworker-client
0.0.8
简单封装的工具类:
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.n3r.idworker.Sid;
import java.util.Random;
/**
* 主键生成工具类
* @author Dongguabai
* @date 2018/7/27 10:52
*/
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class KeyGenerateUtil {
/**
* 一天最大毫秒86400000,最大占用27比特
* 27+10+11=48位 最大值281474976710655(15字),YK0XXHZ827(10字)
* 6位(YYMMDD)+15位,共21位
*
* @return 固定21位数字字符串
*/
public static String get21Num() {
return Sid.next();
}
/**
* 返回固定16位的字母数字混编的字符串。
* @return 固定16位的字母数字混编的字符串
*/
public static String get16LetterAndNum() {
return Sid.nextShort();
}
/**
* 生成唯一的主键
* 格式: 时间+随机数
* @return
*/
public static synchronized String ge19Num() {
Integer number = new Random().nextInt(900000) + 100000;
return String.valueOf(System.currentTimeMillis()) + number;
}
}
还有一个比较好的唯一id生成方法可以参看:https://blog.csdn.net/Dongguabai/article/details/83692012