SpringMvc+mybatis手動開啟和提交事務
阿新 • • 發佈:2019-02-02
//獲取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);
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);