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

 

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

第三步:配置application.properties

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

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

第四步:验证

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

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3NzIyMzA=,size_16,color_FFFFFF,t_70

 

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值