mybatis批量更新
使用jdbc批量更新比较简单:
connection.setAutoCommit(false);
Statement.execute(sql);
connection.commit();
而mybatis中找不到Connection这样的类,怎么办呢?
文/程忠 浏览次数:0次 2017-02-24 17:33:57
connection.setAutoCommit(false);
Statement.execute(sql);
connection.commit();
而mybatis中找不到Connection这样的类,怎么办呢?
1.mybatis会配置一个datasource,这里面可以设置是否自动提交:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="defaultAutoCommit" value="false"></property> </bean> 而一般还会配个transactionManager,如下: <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean>
2.配合以下事务管理代码就可以了:
//以下的transactionManager可通过spring自动注入获取 //@Autowired //private DataSourceTransactionManager transactionManager; //获取事务定义 DefaultTransactionDefinition def = new DefaultTransactionDefinition(); //设置事务隔离级别,开启新事务 def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); //获得事务状态 TransactionStatus status = transactionManager.getTransaction(def); for(int i=0;i<10000;i++){ mapper.update(data); if(i%100==0){ try{ transactionManager.commit(status); status=transactionManager.getTransaction(def); }catch(Exception e){ log.error(e.getMessage(),e); } } } transactionManager.commit(status);
相关阅读
评论:
↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑