ShardingJDBC 06_主键生成器

132 阅读1分钟

通过上一篇的学习,我们可以将同一类型的数据,同时写入到不同库的同名表中,实现了数据分片。

但是通过对数据表的观察,发现在不同分片中的数据记录,存在主键ID重复的情况:

image.png

主键出现重复,这对于我们来说,显然是不能接受的。

那么,我们就需要一个可以确保全库主键唯一的方法。

修改配置

在 properties 配置文件中增加配置信息:

  • 设置需要采用主键生成器的数据表,及其对应的主键列名
  • 设置主键的生成算法

spring.shardingsphere.sharding.tables.orders.key-generator.column=id

spring.shardingsphere.sharding.tables.orders.key-generator.type=SNOWFLAKE

修改实体类

在实体类中设置id属性为自增

image.png

修改测试程序

既然我们已经使用了主键生成算法,那么在创建实体类时,就不需要开发人员自己去设置主键数据, 因此,不应在程序中对 orders 表主键 id 进行赋值,改由 shardingjdbc 进行自动赋值。

运行程序

进入数据库中查看结果时,数据表的 id 列的数据是由 shardingjdbc 自动生成的。