小太阳的博客

编程式事务

方式一

@Autowired
//这个类在配数据源的时候要配置
DataSourceTransactionManager dataSourceTransactionManager;
@Autowired
TransactionDefinition transactionDefinition;

//开启手动事务
TransactionStatus transactionStatus = null;
try {
    transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
    //批量插入
    workProMapper.insertBatchInterruptData(batchList);
    dataSourceTransactionManager.commit(transactionStatus);//提交
}catch (Exception e){
    e.printStackTrace();
    log.error(e.getMessage(),e);//记录日志
    dataSourceTransactionManager.rollback(transactionStatus);//回滚
}

方式二

@Autowired
private TransactionTemplate transactionTemplate;

public void performTransactionalOperation() {
    //execute方法是被try catch包裹的,自动做了开启事务和回滚事务
    transactionTemplate.execute(new TransactionCallback<Void>() {
        public Void doInTransaction(TransactionStatus status) {
            //在这里执行数据库操作
 
            return null;
        }
    });
}

Copyright © 2023,版权所有 - 小太阳的博客 - 黑ICP备2023000004号