天天看点

MybatisPlus中,同一个方法里切换数据源

@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调用实现业务逻辑,或者使用

继续阅读