文档 首页

动态数据源

发布日期:2019-06-18
最后更新:2025-07-02 22:45:23
阅读:543

多数据源,是多个完全不同的数据源,而不是主从关系
动态切换,是指在运行过程中注册数据源和切换数据源,经常需要在同一个方法中操作不同的数据源,通过切面方式满足不了的场景才需要这样切换。
如果是在同一台服务器上的多个库,可以使用同一个数据源,查询时加数据库前缀,如MySQL中可以SELECT * FROM erp.CRM_USER,(当然需要这个帐号有权限访问)

动态数据源的场景:  

一般是在系统运行时注册和切换数据源,  
典型场景如数据中台,用户通过管理端提交第三方数据库的地址帐号,中台汇聚多个数据源的数据  
这种情况下显示不是在配置文件中添加多个数据源,需要在接收到用户提交数据后,生成数据源并交给spring管理  
在切换数据源时也无法通过切面来实现,而是根据用户身份等上下文环境来切换  


默认情况下注册了多数据源时,会同时添加相应的事务管理器,这样在spring上下文环境中就会存在多个事务管理器的实例,所以通过注解管理事务时会出异常,因为spring不知道要用哪个事务管理器
可以把ConfigTable.IS_OPEN_TRANSACTION_MANAGER = false 禁用针对anyline创建的数据源的事务管理器,或参考【多数据源注解事务异常

关于切换数据源的方式在8.7.x后有比较大的更新,参考【8.6到8.7的重要更新】【为什么取消了DynamicDataSource/ThreadLocal切换数据源的方式

数据源中出现的数据库类型需要先添加相应的适配器和驱动,
适配器用来生成不同数据库的SQL,如果不加则使用通用的SQL
驱动用来连接数据库,必须要加

如mysql需要 

org.anyline:anyline-data-jdbc-mysql
mysql:mysql-connector-java 

neo4j需要 

org.anyline:anyline-data-jdbc-neo4j 
org.neo4j:neo4j-jdbc-driver

示例源码】看其中的anyline-simple-data-jdbc-ds

数据库操作 · 2023-09-18

检测数据源是否正常可连接

第三方集成 · 2024-07-26

集成(复用)mybatis动态数据源

动态多数据源切换 · 2024-01-19

直接操作DataSource或Connection

常见问题 · 2024-08-05

多个数据源特征(协议)相同

疑问 · 2023-12-01

为什么取消了DynamicDataSource/ThreadLocal切换数据源的方式

源码 阅读&开发 · 2024-12-05

数据源注册过程

常见问题 · 2023-07-12

未注册数据源:common

AnylineService · 2023-07-17

多数据源场景中service注入失败

动态多数据源切换 · 2025-01-03

关于数据源切换

动态多数据源切换 · 2023-09-22

数据源覆盖

动态多数据源切换 · 2023-09-21

数据源注销

动态多数据源切换 · 2023-08-14

关于临时数据源连接泄漏的问题

事务控制 · 2023-06-14

禁用Anyline事务管理器

事务控制 · 2023-07-27

多数据源注解事务异常 found 2:anyline.transaction

事务控制 · 2023-07-27

多数据源事务控制

常见问题 · 2022-12-06

切换数据源失败可能的原因

动态多数据源切换 · 2021-11-10

spring多数据源配置

动态多数据源切换 · 2021-11-10

动态注册多数据源

动态多数据源切换 · 2021-11-10

springboot多数据源配置

动态多数据源切换 · 2021-11-10

切换数据源

动态多数据源切换 · 2023-06-17

临时数据源操作

多数据源
动态多数据源切换 · 2023-06-08

数据源连接池配置参数(连接池类的属性)

动态多数据源切换 · 2023-04-05

关于2023-03-31之后数据源切换@Import(DynamicDataSourceRegister.class)

动态多数据源切换 · 2022-12-02

切换数据源失败可能的原因

动态多数据源切换 · 2022-12-02

三种方式切换数据源

动态多数据源切换 · 2022-12-02

动态多数据源切换实现原理

动态多数据源切换 · 2022-12-02

七种方式注册数据源