在多数据源模式下切换数据源可以使用@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一下,防止内存溢出。

具体代码参考了下面,参考了下面两篇文章可以跳转过去看看。 

​​​​​Mybatis实现批量新增的工具类(batch模式)

mybatis如何开启batch模式

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐