事务
1.什么是事务?
事务是我们要执行的一系列操作,要么完全执行,要么完全不执行。这样可以确保所有的操作都成功,否者不会跟新数据库。
2.事务有两种结果:
所有的操作执行成功,提交事务。如果有一个操作执行失败,将发生回滚,撤销之前到事务发生开始时执行的操作。
3.spring的事务使用:
有两个类DataSourceTransactionManager,DefaultTransactionDefinition
执行过程:开启事务-》执行操作-》如果执行成功提交事务,如果发生异常就回滚事务。
spring的具体代码:
/** * * @author junwei.ou * 任务管理 * */ public class ScoreTask { @Resource private DataSourceTransactionManager transactionMapper; @Resource private DefaultTransactionDefinition transactionDefinition; public void update(Map<?,?> resData){ TransactionStatus status = transactionMapper.getTransaction(transactionDefinition); String dd =(String)resData.get("accNo"); String orderid = (String)resData.get("orderId"); String acco[]=ScoreConstant.GET_ACCNO(); if(dd.equals(acco[0])){ OrderTrade2 trade = orderTradeService.getOrderTradeBySeriNum(orderid); //根据订单号查询订单 String[] ratio = ScoreConstant.SCORE_DOUBLE_RATIO(); int score = (int)( Double.parseDouble(ratio[0])*trade.getRealPay()); //应增加的双倍积分 User2Example ex = new User2Example(); ex.createCriteria().andOpenIdEqualTo(trade.getOpenId()); //根据OpenId得到用户信息 List<User2> user2List = user2Mapper.selectByExample(ex); User2 user = user2List.get(0); int ss = user.getScore()==null?0:user.getScore(); user.setScore(score+ss); //更新用户信息 try { user2Mapper.updateByOpenId(user); trade.setState(1); // orderTradeService.updateById2(trade); //跟新订单信息 orderTrade2Mapper.updateByPrimaryKey(trade); //双倍积分记录 UserScore userScore= new UserScore(); userScore.setOpenId(trade.getOpenId()); userScore.setScoreNumber(score); userScore.setScoreDescrible("联名卡双倍积分 订单编号"+trade.getOrderSerioNum()); userScore.setCreateTime(new Date()); userScore.setScoreTyple(2); int number=userScoreMapper.insert(userScore); System.out.println(number); transactionManager.commit(status); //提交事务并跟新数据库 } catch (Exception e) { e.printStackTrace(); transactionManager.rollback(status);//发生异常时回滚事务 } } } }注意:一定不能缺少下面这句代码transactionMapper.commit(status);
spring的事务配置的方法。
spring配置文件中有三种组成:其中有DataSource、TransactionManager和代理机制这三部分
相关推荐
Spring事务管理Demo
spring事务管理 配置文件等详解
Spring事务管理教程,详细讲解了Spring中的事务管理,包括声明式事务,注解式事务,以及事务配置等等
Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型
Synchronized锁在Spring事务管理下,导致线程不安全。
spring 事务管理的理解
Spring事务管理(全),需要的可下载!
spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...
在该JAR包的org.springframework.transaction包中,有3个接口文件PlatformTransactionManager、TransactionDefinition和TransactionStatus,如下图所示: Spring事务管理的三个核心接口 5.1.1 事务管理的核心接口 1....
Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate
Spring事务管理中所需要的jar包是 spring-tx-3.2.0.RELEASE.jar
Spring 事务管理,Spring 事务管理,Spring 事务管理,Spring 事务管理
详细介绍Spring事务管理
此包含有所有Spring事务管理开发所需要的Jar包,包含框架、核心、表达式、日志、编译、事务切面aop、数据库连接、单元测试、框架文本等jar包。
Spring事务管理A方法内部调用B方法的回滚问题测试代码