标签:Springboot 雪花 Long ID public 算法 SnowflakeShardingKeyGenerator 全局 id
import org.apache.shardingsphere.core.strategy.keygen.SnowflakeShardingKeyGenerator;
public class IdUtil { private static SnowflakeShardingKeyGenerator generator = new SnowflakeShardingKeyGenerator(); public static Long generateSnowFlakeId(){ return Long.parseLong(generator.generateKey().toString()); } }
1、使用雪花算法时,id没有默认值,需要加入注解
- java.sql.SQLException: Field ‘id’ doesn’t have a default value
@TableId(value = "id", type = IdType.INPUT)
public enum IdType { /** * 数据库ID自增 */ AUTO(0), /** * 该类型为未设置主键类型(将跟随全局) */ NONE(1), /** * 用户输入ID * <p>该类型可以通过自己注册自动填充插件进行填充</p> */ INPUT(2), /* 以下3种类型、只有当插入对象ID 为空,才自动填充。 */ /** * 全局唯一ID (idWorker) */ ID_WORKER(3), /** * 全局唯一ID (UUID) */ UUID(4), /** * 字符串全局唯一ID (idWorker 的字符串表示) */ ID_WORKER_STR(5); }
2、使用时定义id时Long型,swagger传入的时候Long转雪花算法是19位,导致精度丢失
加入注解,在使用时转为string类型
@JsonSerialize(using = ToStringSerializer.class)
标签:Springboot,雪花,Long,ID,public,算法,SnowflakeShardingKeyGenerator,全局,id 来源: https://www.cnblogs.com/shirleyxueli/p/16440759.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。