Mybatis自定义插件生成雪花ID做为主键项目
有关Mybatis雪花ID主键插件前面写了两篇博客作为该项目落地的铺垫。
该插件项目可以直接运用于实际开发中,作为分布式数据库表主键ID使用。
一、项目概述
1、项目背景
在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点
主键自增:1、自增ID容易被爬虫遍历数据。2、分表分库会有ID冲突。
UUID: 1、太长,并且有索引碎片,索引多占用空间的问题 2、无序。
雪花算法就很适合在分布式场景下生成唯一ID,它既可以保证唯一又可以排序,该插件项目的原理是
通过拦截器拦截Mybatis的insert语句,通过自定义注解获取到主键,并为该主键赋值雪花ID,插入数据库中。
2、技术架构
项目总体技术选型
SpringBoot2.1.7 + Mybatis + Maven3.5.4 + Mysql + lombok(插件)
3、使用方式
在你需要做为主键的属性上添加@AutoId注解,那么通过插件可以自动为该属性赋值主键ID。
public class TabUser {
/**
* id(添加自定义注解)
*/
@AutoId
private Long id;
/**
* 姓名
*/
private String name;
//其它属性 包括get,set方法
}
4、项目测试
配置好数据库连接信息,直接启动Springboot启动类Application.java,访问