mybatis批量更新

使用jdbc批量更新比较简单:
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);

文/程忠 浏览次数:0次   2017-02-24 17:33:57

相关阅读


评论:
点击刷新

↓ 广告开始-头部带绿为生活 ↓
↑ 广告结束-尾部支持多点击 ↑