Java微服务数据库专题
一、动态数据源
动态数据源主要结合租户系统使用,根据请求中携带的租户信息(域名、请求头等)动态切换数据源。
基本实现:
1)创建DynamicDataSource类集成抽象类AbstractRoutingDataSource(org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource)
2)创建TenantHolder类,用于管理当前请求的租户信息
3)通过Filter或AOP切面(Aspect)动态加载/切换数据源。
参考资料:
springboot实现动态数据源,动态数据源原理与解析,租户系统动态数据源 基于Filter实现动态数据源,如集成了Swagger/Kneif4j等需要过滤。有源码
MyBatis Plus 插件 动态数据源实现原理与源码讲解 (dynamic-datasource-spring-boot-starter-master)
Springboot实现多租户切换数据源,动态读取数据库数据源信息
Springboot项目使用动态切换数据源实现多租户SaaS方案 三类租户实现方式,AbstractRoutingDataSource源码解读及实现根据租户动态切换数据库实现
二、连接池
三、主备
四、数据库版本管理
参考资料
mybatisPlus属性自动填充配置之MetaObjectHandler接口实战
springboot+mybatis-plus+druid动态数据源和自动生成代码 此种包含分页、自动填充的配置等。其中的分页插件为旧版,3.4.0之后应使用PaginationInnerInterceptor,具体参见:
解决mybatis-plus3.4.1分页插件PaginationInterceptor和防止全表更新与删除插件SqlExplainInterceptor过时失效问题
动态数据源分页插件失效解决方法:使用 MybatisSqlSessionFactoryBean 的实例方法 .setPlugins(mybatisPlusInterceptor); 把拦截器添加进去就可以了。
参见:求解,Mybatis-Plus分页插件(MybatisPlusInterceptor)注入未生效,total 为0
mybatis-plus分页插件新版本失效问题 包含 阻止恶意或误操作的全表更新删除,join 优化,分页最大条数限制
关于Mybatis-plus 分页插件失效,看这一篇就够了 新分页插件使用
MyBatis Plus 源码 | 主键ASSIGN_ID生成方式的雪花改进版算法分析
Mybatis-plus新版分页插件MybatisPlusInterceptor的使用 分页插件使用教程,QueryWrapper传递查询参数