shardingsphere自定义分布式主键

实验环境

springboot版本:2.2.2.RELEASE

shardingsphere版本:4.0.0-RC3

hutool版本:4.5.15(主要是借用里面的雪花算法生成id)

shardingsphere自定义分布式主键,主键可以有很多种生成方式,这里只是方便,为了验证如何自定义主键而已,实际项目中

可以根据需要定义主键,可以参考美团的分布式主键,并改造成适合自己业务的主键。

实验操作

基于上篇文章进行改造:

https://blog.csdn.net/u010772230/article/details/103824771

第一步:编写主键生成类,需要实现接口ShardingKeyGenerator进行扩展。

public class MyKeyGenerator implements ShardingKeyGenerator {
    @Override
    public Comparable generateKey() {
        Snowflake snowflake = IdUtil.createSnowflake(1, 1);
        Long id = snowflake.nextId();
        System.out.println("我自定义的id" + id);
        return id;
    }

    @Override
    public String getType() {
        return "MyKeyGenerator";
    }

    @Override
    public Properties getProperties() {
        return null;
    }

    @Override
    public void setProperties(Properties properties) {

    }

}

第二步:配置SPI

在Apache ShardingSphere中,很多功能实现类的加载方式是通过SPI注入的方式完成的。 Service Provider Interface (SPI)是一种为了被第三方实现或扩展的API,它可以用于实现框架扩展或组件替换。

注意:在resources目录下新建META-INF文件夹,再新建services文件夹,

然后新建文件的名字为org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator,

打开文件:复制自定义分布式主键的类全路径到文件中保存

com.example.shareingjdbctest.config.MyKeyGenerator

 

shardingsphere自定义分布式主键_第1张图片

第三步:配置application.properties

其中MyKeyGenerator对应自定主键类的getType里面的实现内容

spring.shardingsphere.sharding.tables.user.key-generator.column=id
spring.shardingsphere.sharding.tables.user.key-generator.type=MyKeyGenerator

第四步:验证

在MyKeyGenerator自定义类中打个断点,发现通过新增数据的时候,会进入断点中,并且数据库中保存的数据为这个类生成的id,至此验证完毕。

 

你可能感兴趣的:(shardingsphere)