public String createAutoID(String tableNameKey) {
//这里是 Redis key的前缀,如: sys:tabieId:表名 如果不需要去掉表名也可以
String key = MessageFormat.format("{0}:{1}:{2}", "sys","tableId",tableNameKey);
//查询 key 是否存在, 不存在返回 1 ,存在的话则自增加1
Long autoID = stringRedisTemplate.opsForValue().increment(key, 1);
//加上时间戳 如果不需要 时分秒可以去掉
String datetime = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
//这里是 6 位id,如果位数不够可以自行修改 ,下面的意思是 得到上面 key 的 值,位数为6 ,不够的话在左边补 0 ,比如 110 会变成 000110
String value = StringUtils.leftPad(String.valueOf(autoID), 6, "0");
//然后把 字符串、时间戳和优化后的 ID 拼接
String code = MessageFormat.format("{0}{1}{2}",tableNameKey, datetime,value);
return code;
}
结果:
QTFK20231128160100000001