【MyBatis Plus】MyBatis Plus的事务管理能做什么?

Mybatis Plus可以很方便地实现事务管理。

通过@Transactional注解事务的方法,实现事务管理:

@Service
public class ITZhiMeiUserServiceImpl implements ITZhiMeiUserService {

  @Transactional  
  public void insertUser(String username) {
    // inserts a new user... 
    userMapper.insert(...)

    // throws an exception... 
    throw new RuntimeException(); // the transaction will roll back   
  }
}

@Transactional具有以下主要特性:

  • 事务Propagation: 事务传播行为,可选配置。
  • 事务Isolation:事务隔离级别,可选配置。
  • 事务Timeout:事务超时时间,可选配置。
  • 事务RollbackFor/noRollbackFor:配置回滚和不回滚的异常类型。
  • readOnly:只读事务,可选配置。

设置这些属性后,Mybatis Plus可以:

  • 自动开启事务
  • 在方法执行前获取数据库连接
  • 在方法结束后提交或回滚事务
  • 自动释放资源

同时还支持@Transactional在类级别使用:

@Transactional
@Service
public class ITZhiMeiUserServiceImpl implements ITZhiMeiUserService{  
  // 所有带@Transactional的方法都适用事务  
}

通过这种方式,Mybatis Plus可以方便地实现:

  • 声明式事务
  • 事务传播
  • 事务隔离级别配置
  • 事务超时
  • 回滚和不回滚异常类型配置
  • 只读事务

有效减少我们对底层事务机制的关注,降低使用难度。

总的来说,Mybatis Plus通过@Transactional注解实现简单易用的声明式事务。