ibatis 对事务和批量提交的处理,以及回滚的处理

//ibatis batch 示例
       protected void batchCreate(final List<T> memberList, final String statement) {
            
             SqlMapClientCallback callback = new SqlMapClientCallback() {
                   public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {     
                         executor.startBatch();
                         for (T tObject : memberList) {                      
                               executor.insert(statement, tObject); // statement在*MapSql.xml一条语句的id     
                         }                 
                         executor.executeBatch();                
                         return null;
                        
                   }
                  
             };
            
如果有很多非查询的(insert/update/delete)语句要处理,为了减少网络通讯的流量,可以进行批处理
sqlMap.startBatch();
    insert/update/delete 语句处理
sqlMap.endBatch();

try {
      sqlMapClient.startTransaction(); 
//事务开始
      Person p = 
       (Person)sqlMapClient.queryForObject
                       ("getPerson", new Integer(9));

      p.setLastName("Smith");
      sqlMapClient.update("updatePerson", p);

      Department d = 
       (Department)sqlMapClient.queryForObject       
                       ("getDept", new Integer(3));

      p.setDepartment(d);
      sqlMapClient.update("updatePersonDept", p);

      sqlMapClient.commitTransaction(); 
//提交事务,从开始到这里是一个事务

} finally {
        sqlMapClient.endTransaction();
 //事务结束
}

//回滚

sqlMap.getCurrentConnection().rolback();

即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值