zoukankan      html  css  js  c++  java
  • Spring中三种编程式事务的使用

    • 引入事务管理器
    @Autowired
    TransactionTemplate transactionTemplate;
    
    @Autowired
    PlatformTransactionManager transactionManager;

    使用方式1:

    boolean result = transactionTemplate.execute(new TransactionCallback<Boolean>() {
        @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(); } }
  • 相关阅读:
    POJ题目分类(转)
    ACM训练计划建议(转)
    ACM题集以及各种总结大全(转)
    HDU 2673 (排序)
    HDU 1391 number steps(找规律,数学)
    HDU 1280 前m大的数(排序,字符串)
    HDU 1236 排名(结构体+排序)
    2015 湘潭大学程序设计比赛(Internet)H题-括号匹配
    最短路---hdu2544
    Rescue--hdu1242
  • 原文地址:https://www.cnblogs.com/zhjh256/p/10739887.html
Copyright © 2011-2022 走看看