helloworlde / SpringBoot-DynamicDataSource

Dynamic datasource, multiple datasource of spring boot/ distribution transaction; spring boot 多数据源,动态数据源,分布式事务
Apache License 2.0
698 stars 314 forks source link

能否通过数据库表的方式来配置多个数据源? #2

Closed smartdriver001 closed 6 years ago

smartdriver001 commented 6 years ago

比如我有一个base库, 里面有一张表存放其他数据库的名称,用户,密码等,我想通过请求参数来来指定到其中的一个数据库,我应该怎么做?

yosaku01 commented 6 years ago

http://blog.csdn.net/u011126891/article/details/79014741 这是我的解决方案,你看一下对你有帮助没有?

helloworlde commented 6 years ago

是可以的,也可以参考 https://github.com/YHYR/Mybatis https://www.jianshu.com/p/4df0daa1cd68 实现,稍后会把这些加上去

yosaku01 commented 6 years ago

用我的方案,MybatisHelper貌似会失效,可能需要调整MybatisHelper的代码

huayanYu commented 6 years ago

可以试试 https://github.com/baomidou/dynamic-datasource-spring-boot-starter

gatspy commented 6 years ago

我也蛮需要用类似,或者配置中心的方式实现多租户多库的数据源切换啊。怎么解呢?

helloworlde commented 6 years ago

我也蛮需要用类似,或者配置中心的方式实现多租户多库的数据源切换啊。怎么解呢?

可以用 SpringConfig + SpringCloud Bus 实现,当配置更新之后通过 SpringCloud Bus 通知应用更新配置

gatspy commented 6 years ago

@helloworlde 谢谢您的回复。 更新配置应该不是问题。 在配置中心可以配置所有租户对应的数据库和数据源(目前是一个租户一个独立数据库),然后从api接口中获取到当前租户的id后呢? 怎么配置来切换数据源?还有就是租户的读写分离呢?

helloworlde commented 6 years ago

@gatspy 其实真正切换数据源的实现是通过修改当前线程的本地变量实现的,可以暴露 API 调用切换数据源的方法,读写分离也是通过设置不同的数据源Bean 名称,都可以使用这个方法来实现