博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中三种编程式事务的使用
阅读量:5172 次
发布时间:2019-06-13

本文共 1735 字,大约阅读时间需要 5 分钟。

  • 引入事务管理器
@AutowiredTransactionTemplate transactionTemplate;@AutowiredPlatformTransactionManager transactionManager;

使用方式1:

boolean result = transactionTemplate.execute(new TransactionCallback
() { @Override public Boolean doInTransaction(TransactionStatus status) { try { // TODO something } catch (Exception e) { //TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动开启事务回滚 status.setRollbackOnly(); logger.error(e.getMessage(), e); return false; } return true; }});

使用方式2:

/** * 定义事务 */DefaultTransactionDefinition def = new DefaultTransactionDefinition();def.setReadOnly(false);//隔离级别,-1表示使用数据库默认级别def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);TransactionStatus status = transactionManager.getTransaction(def);try {    //TODO something     transactionManager.commit(status);} catch (Exception e) {    transactionManager.rollback(status);    throw new InvoiceApplyException("异常失败");}

使用方式3:

SqlSession sqlSession = null;try {    sqlSession = otInvSqlSessionFactory.openSession(ExecutorType.BATCH, true);    XXXXXMapper xXxxMapper = sqlSession.getMapper(XXXXXMapper.class);     Savepoint savepointStep1 = sqlSession.getConnection().setSavepoint();     sqlSession.getConnection().rollback(savepointStep1);    sqlSession.commit();}catch(Exception e){    if (null != otInvSqlSession) {        sqlSession.rollback(true);        logger.error("数据回滚", e);    }}finally {    if (null != sqlSession) {        sqlSession.clearCache();        sqlSession.close();    }}

 

转载于:https://www.cnblogs.com/zhjh256/p/10739887.html

你可能感兴趣的文章
ZOJ 1654 二分匹配基础题
查看>>
【玩转Ubuntu】02. Ubuntu上搭建Android开发环境
查看>>
[蓝桥杯][2017年第八届真题]小计算器(模拟)
查看>>
mybatis与hibernate区别
查看>>
vmware workstation 不可恢复错误 vcpu-0
查看>>
使用react定义组件的两种方式
查看>>
maven 快照
查看>>
有限状态机FSM的写法
查看>>
一个简单SeekBar样式的例子
查看>>
解决哈希冲突的三种方法(拉链法、开放地址法、再散列法)
查看>>
按需加载
查看>>
第四、五周学习进度表
查看>>
QT表格的宽度自适应调整方法void setStretchLastSection ( bool stretch ) 转帖
查看>>
导航加轮播
查看>>
js调用swf文件代码
查看>>
CodeForces- 371C Hamburgers
查看>>
java 特殊字符
查看>>
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: PermGen space
查看>>
机房测试8.29
查看>>
锁机制,信号机制,事件机制
查看>>