在多数据源模式下切换数据源可以使用@DS来实现多数据的切换操作,进行SQL的操作,但是有时候的时候场景需要使用批量操作大量数据,其中有通过sqlMap使用foreach的也有使用代码里面的SqlSession开启batch。
但是有时候会有多数据源的情况,如果是自己创建的sqlfactory那么直接引用并开启就行,但是如果使用的是dynamic-datasource,需要使用注解@DS切换数据源的,你会发现就算再sqlmap中指定了数据源依旧不生效,是因为你需要自己在手动切换一次指定的数据源才可以。下面直接上列子
//切换数据源
DynamicDataSourceContextHolder.push(datasource);
SqlSessionFactory sqlSessionFactory = sqlSessionTemplate.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false);
M modelMapper = sqlSession.getMapper(mapperClass);
其中需要使用
DynamicDataSourceContextHolder.push来切换数据源,并且最后需要clear一下,防止内存溢出。
具体代码参考了下面,参考了下面两篇文章可以跳转过去看看。