广播表配置

广播表概述

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

使用广播表

在两个数据库中同时创建广播表:

CREATE TABLE `order_status` (
  `tstates` bigint(255) DEFAULT NULL,
  `tname` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

image-20211219121446910

在工程当中创建所对应的对象实体类:

image-20211219121617666

/**
 * @author BNTang
 * @version V1.0
 * @project sharding-sphere
 * @date Created in 2021/12/19 /019 12:15
 * @description
 **/
@Data
@TableName("order_status")
public class OrderStates {
    private Long tstates;
    private String tname;
}

创建 Mapper:

image-20211219121722225

/**
 * @author BNTang
 * @version V1.0
 * @project sharding-sphere
 * @date Created in 2021/12/19 /019 12:16
 * @description
 **/
public interface OrderStateMapper extends BaseMapper<OrderStates> {
}

修改 application.properties 添加广播表相关配置:

image-20211219122012379

# 广播表
spring.shardingsphere.rules.sharding.broadcast-tables=order_status
# 指定某列的生成策略
spring.shardingsphere.rules.sharding.tables.order_status.key-generate-strategy.column=tstates
# 主键ID生成算法,使用的是雪花算法
spring.shardingsphere.rules.sharding.tables.order_status.key-generate-strategy.key-generator-name=snowflake

测试

@Test
void insertStatus() {
    OrderStates orderStates = new OrderStates();
    orderStates.setTname("处理中");
    this.orderStateMapper.insert(orderStates);
}

image-20211219164327564

观察结果,可以在两个数据库当中看到相同的记录:

image-20211219164403891

posted @ 2021-12-19 16:45  BNTang  阅读(309)  评论(0编辑  收藏  举报