使用dynamic-datasource切换数据源实现mybatis的batch

在多数据源模式下切换数据源可以使用@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模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值