广播表配置
广播表概述
- 指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致
- 适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表
使用广播表
在两个数据库中同时创建广播表:
CREATE TABLE `order_status` (
`tstates` bigint(255) DEFAULT NULL,
`tname` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在工程当中创建所对应的对象实体类:
/**
* @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:
/**
* @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 添加广播表相关配置:
# 广播表
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);
}
观察结果,可以在两个数据库当中看到相同的记录: