SpringMvc+mybatis 手动提交事务

mybatis | 2019-09-19 09:33:04

SpringMvc+mybatis可以很方便的设置自动事务管理,但有些时候我们就试需要获取TransactionManager,然后手动提交事务。

	//获取Spring容器的对象
	WebApplicationContext contextLoader = ContextLoader.getCurrentWebApplicationContext();
        //设置属性的默认属性
        DefaultTransactionDefinition definition = new DefaultTransactionDefinition();
        //设置事务的传播行为,此处是设置为开启一个新事物
        definition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        //设置事务的隔离级别,此处是读已经提交
        definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
        //从spring容器对象中获取DataSourceTransactionManager,这个根据配置文件中配置的id名(transactionManager)
        DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) contextLoader.getBean("transactionManager");
        //获取事务状态对象
        TransactionStatus transactionStatus = (TransactionStatus) transactionManager.getTransaction(definition);
      	//****开始对数据库操作
        //从账号表中随机获取一个账号
        account = registMapper.getAccountFromTbAccount();
        //在该账号表中删除该账号
        registMapper.deleteAccountByAccountNumber(account);
      	//****结束对数据库操作
        //提交事务
        transactionManager.commit(transactionStatus);

 

登录后即可回复 登录 | 注册
    
关注编程学问公众号