1、给配置文件添加内置生成器

a、对application-sharding-database.properties配置文件

  1. #id的主键生成器(配置之后就会采用系统内置的雪花算法)
  2. spring.shardingsphere.sharding.tables.position.key-generator.column=id
  3. spring.shardingsphere.sharding.tables.position.key-generator.type=SNOWFLAKE

b、 entity中的Position的id,要添加自助生成

@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)  // 增加自助生成
private long id;

c、演示效果

image.png image.png

2、自定义的生成器

a、创建一个类,实现ShardingKeyGenerator接口

package com.slin.id;

import org.apache.shardingsphere.core.strategy.keygen.SnowflakeShardingKeyGenerator;
import org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator;

import java.util.Properties;

public class MyId implements ShardingKeyGenerator {

    // 借用雪花片算法来自定义自个的主键

    SnowflakeShardingKeyGenerator snow= new SnowflakeShardingKeyGenerator();


    /*返回生成的主键值*/
    public Comparable<?> generateKey() {
        System.out.println("执行了自定义逐渐生成器");
        return snow.generateKey();
    }

    /*获取类型,配置当中就是要配置这个名字*/
    public String getType() {
        return "LAGOUKEY";
    }

    public Properties getProperties() {
        return null;
    }

    public void setProperties(Properties properties) {

    }
}

b、创建META-INF/services文件夹,并添加文件

文件名是:org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator
在文件里面追加包名.类名就可以了
image.png

c、修改为自定义的主键类型

image.png

d、测试效果

控制台打印了自定义信息,说明是调用了自定义的主键生成
image.png

打开一个表中的效果
image.png
总结:也就是创建自定义类、添加配置(启用SPI)、应用自定义类型