@DS("one")
public void test() {
// 通过第一数据源查询(或方法上不设置默认主数据源)
List<User> oneList = userService.list();
// 第二数据源查询
DynamicDataSourceContextHolder.push("two");
List<User> Twolist = userService.list();
DynamicDataSourceContextHolder.clear();
}
注意:在同一个方法中切换数据源,可以在最终调用的mapper或者service上家@DS实现或者用上边的方法实现,
但是:
在同一个方法中切换数据源,该方法上有事务注解(@Transactional)时,动态数据源切换失效,不管DS还是DynamicDataSourceContextHolder都失效,所以尽量拆到service中不同的方法中(支持@Transactional)来处理,最终由controller调用实现业务逻辑,或者使用