结论
先说结论,Sharding Jdbc 5.x 版本应该有可以获取数据库元信息的机制,只要你相同表名的表只有一个,那么框架可以自动定位到所在的数据源,具体可以参考以下的类:
class MySQLTableMetaDataLoader implements DialectTableMetaDataLoader
本人也是简单看了一下,发现百度上很少相关的资料,于是就写了一篇博客,本人意见不代表最终结论,如果有不正确的地方请大佬指正,感谢!
过程
本人在使用 Sharding Jdbc 4.x 版本的资料学习 Sharding Jdbc 5.x 时候,需要配置一个默认数据源,发现了以下配置不再生效:
spring.shardingsphere.sharding.default-data-source-name=
后面在github上的issue上发现也有人提出这样的问题:原地址
经过长时间谷歌发现了 Sharding Jdbc 5 中有一个元信息的概念,然后去看官网文档:文档地址
发现了以下配置,于是就判断应该是有一些机制在程序启动的时候读取数据库的元信息,这样路由的时候就可以知道表在哪一个数据源:
SPI 名称 | 详细说明 |
---|---|
DialectTableMetaDataLoader | 用于使用数据库方言快速加载元数据 |
已知实现类 | 详细说明 |
---|---|
MySQLTableMetaDataLoader | 使用 MySQL 方言加载元数据 |
OracleTableMetaDataLoader | 使用 Oracle 方言加载元数据 |
PostgreSQLTableMetaDataLoader | 使用 PostgreSQL 方言加载元数据 |
SQLServerTableMetaDataLoader | 使用 SQLServer 方言加载元数据 |
H2TableMetaDataLoader | 使用 H2 方言加载元数据 |
OpenGaussTableMetaDataLoader | 使用 OpenGauss 方言加载元数据 |
小结
Sharding Jdbc 5.x 新增了自动读取数据库元信息的机制,可以定位到你的表所在的数据源,前提是相同表名的表只有一个。
本人也是简单看了一下,发现百度上很少相关的资料,于是就写了一篇博客,本人意见不代表最终结论,如果有不正确的地方请大佬指正,感谢!