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源码解读及实现根据租户动态切换数据库实现

二、连接池

三、主备

 

四、数据库版本管理

   使用Flyway实现多数据源数据库脚本管理和迭代更新

参考资料

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传递查询参数

posted @ 2022-08-18 17:51  十二楼C  阅读(53)  评论(0编辑  收藏  举报