Spring+Mybatis 手動控制事務
參考:
https://blog.csdn.net/qq_41750175/article/details/87621170
public boolean testDelete(String jobCode) throws Exception {
boolean flag = false;
//1.獲取事務控制管理器
DataSourceTransactionManager transactionManager = HqznContext.getBean(
"transactionManager", DataSourceTransactionManager.class);//這里是spring手動注入bean,也可以使用自動注入 HqznContext是一個工具類:主要用於簡化spring手動注入代碼
//2.獲取事務定義
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
//3.設置事務隔離級別,開啟新事務
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
//4.獲得事務狀態
TransactionStatus status = transactionManager.getTransaction(def);
try {
//5.具體的數據庫操作(多個)
BOBaseJob r = new BOBaseJob();
r.setJobCode("SW001");
r.setJobName("事務001");
BOBaseJobMapper.deleteByPrimaryKey(jobCode);
BOBaseJobMapper.insert(r);
flag = true;
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
}
return flag;
}
