9B4.多数据源操作
9B4.多数据源操作
Wings默认单数据源,当出现多数据源需求时,使用Jooq的思路和注意事项。
9B4.1.SpringBoot手动
特点:手动控制,掌控每一个操作。
If you need to use jOOQ with multiple data sources, you should create your own DSLContext for each one. See JooqAutoConfiguration for more details.
In particular, JooqExceptionTranslator and SpringTransactionProvider can be reused to provide similar features to what the auto-configuration does with a single DataSource.
根据Configure jOOQ with Two DataSources,设置多个DSLContext即可。
但不能使用默认注入Dao操作,因其默认使用@Primary数据源。对数据的操作,
- 使用DSLContext操作数据
- 先new Dao,然后setConfiguration(dsl.configuration())
9B4.2.Jooq自动
特点:可根据线程上下文,CURD类型,SQL参数,批量控制。
void start(ExecuteContext ctx); Overridable attributes in ExecuteContext:
ExecuteContext.connectionProvider(ConnectionProvider): The connection provider used for execution. This may be particularly interesting if a Query was de-serialised and is thus lacking the underlying connection
通过ExecuteListener执行时切换数据源,步骤如下,
- 定义多数据源的ConnectionProvider
- 实现 ExecuteListener.start(ExecuteContext)
- 设置执行数据源 ExecuteContext.connectionProvider()
9B4.3.ShardingSphere自动
特点:依照分库的思路,切换数据源。
在不改变代码的情况下,使用ShardingSphere配置,在运行时自动切换数据。