接着上一篇:https://www.cnblogs.com/wwjj4811/p/14598033.html
公共表
存储固定数据的表,表数据很少变化,查询时候经常进行关联。(例如项目中的码值表)
环境搭建
在每个数据库中创建出相同结构的公共表
create table t_udict (
dictid BIGINT(20) PRIMARY KEY,
ustatus VARCHAR(100) not null ,
uvalue VARCHAR(100) not null
)
实体类和mapper:
@Data
@TableName("t_udict")
public class Udict {
private Long dictid;
private String ustatus;
private String uvalue;
}
public interface UdictMapper extends BaseMapper<Udict> {
}
修改配置文件
application.properties文件:
#--------------------------------公共表-----------------------------------#
spring.shardingsphere.sharding.broadcast-tables=t_udict
spring.shardingsphere.sharding.tables.t_udict.key-generator.column=dictid
spring.shardingsphere.sharding.tables.t_udict.key-generator.type=SNOWFLAKE
#------------------------------------------------------------------------#
测试
测试插入
@Resource
UdictMapper udictMapper;
@Test
void addUdict(){
Udict udict = new Udict();
udict.setUstatus("1");
udict.setUvalue("在线");
udictMapper.insert(udict);
}
ShardingJdbc会向所有的数据库中的公共表插入该条数据。
测试查询
@Test
void getOneUdict(){
List<Udict> udicts = udictMapper.selectList(null);
for (Udict udict : udicts) {
System.out.println(udict);
}
}
查询公共表只会向其中一个数据库查询一次。