articleList

22-Sharding-Jdbc广播表介绍和配置实战

2025/03/13 posted in  ShardingJDBC
Tags: 

  • 什么是广播表

    • 指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致
    • 适用于数据量不大且需要与海量数据的表进行关联查询的场景
    • 例如:字典表、配置表
  • 注意点

    • 分库分表中间件,对应的数据库字段,不能是sql的关键字,否则容易出问题,且报错不明显
  • 配置实战

    • 数据源新增ds1
    • ad_config表
CREATE TABLE `ad_config` (
  `id` bigint unsigned NOT NULL COMMENT '主键id',
  `config_key` varchar(1024) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '配置key',
  `config_value` varchar(1024) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '配置value',
  `type` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '类型',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  • POJO类
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ad_config")
public class AdConfigDO {

    private Integer id;
    private String configKey;
    private String configValue;
    private String type;

}
  • AdConfigMapper
public interface AdConfigMapper extends BaseMapper<AdConfigDO> {
}
  • 配置文件
#配置广播表
spring.shardingsphere.sharding.broadcast-tables=ad_config
spring.shardingsphere.sharding.tables.ad_config.key-generator.column=id
spring.shardingsphere.sharding.tables.ad_config.key-generator.type=SNOWFLAKE
  • 测试
    @Test
    public void testSaveAdConfig(){

        AdConfigDO adConfigDO = new AdConfigDO();
        adConfigDO.setConfigKey("banner");
        adConfigDO.setConfigValue("xdclass.net");
        adConfigDO.setType("ad");
        adConfigMapper.insert(adConfigDO);

    }

60724845.png
60762781.png