`

spring事物管理

 
阅读更多

事务

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和代理机制这三部分 

 

 

  • 大小: 53.6 KB
分享到:
评论

相关推荐

    Spring事务管理Demo

    Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何实现事务的管理。 首先,Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 ...

    Spring事务管理开发必备jar包

    本资源包提供了进行Spring事务管理开发所需的所有关键库,包括框架基础、核心组件、AOP(面向切面编程)支持、日志处理、编译工具以及与数据库交互的相关jar包。下面将对这些知识点进行详细解释: 1. **Spring框架*...

    spring事务管理

    ### Spring事务管理详解 #### 一、Spring事务管理概述 Spring框架提供了强大的事务管理功能,使得开发者能够更方便地管理应用程序中的事务。Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 -...

    spring 事务管理的理解

    Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。

    Spring事务管理.pdf

    Spring事务管理.pdf 1.资料 2.本地事务与分布式事务 3.编程式模型 4.宣告式模型

    Synchronized锁在Spring事务管理下线程不安全

    Synchronized锁在Spring事务管理下,导致线程不安全。

    Spring事务管理的jar包

    本篇将深入探讨Spring事务管理的核心概念、工作原理以及如何使用`spring-tx-3.2.0.RELEASE.jar`这个jar包。 首先,我们需要理解什么是事务。在数据库系统中,事务是一组操作,这些操作被视为一个整体,要么全部完成...

    Spring事务管理失效原因汇总

    标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...

    spring事务管理5种方法

    本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...

    Spring事务管理4种方式

    本文将详细介绍Spring事务管理的四种方式:编程式事务管理、声明式事务管理、PlatformTransactionManager接口以及TransactionTemplate。 1. **编程式事务管理**:这是一种手动控制事务的方式,通过在代码中调用`...

    详细介绍Spring事务管理

    ### Spring事务管理详解 #### 一、Spring事务管理的重要性及必要性 在现代软件开发中,事务管理是一项至关重要的技术,特别是在涉及数据库操作时。事务能够确保一系列操作要么全部成功,要么全部失败,这对于保持...

    spring事务管理.rar

    Spring事务管理是Spring框架的核心特性之一,它提供了一种强大且灵活的方式来管理应用程序中的事务边界。在企业级Java应用中,事务处理是确保数据一致性、完整性和可靠性的关键部分。本篇文章将深入探讨Spring的事务...

    spring事务管理.doc

    总的来说,Spring事务管理提供了一种灵活、强大的方式来处理应用程序中的事务,无论是在简单还是复杂的事务场景下,都能有效保证数据的一致性和完整性。通过声明式事务管理,开发者可以将关注点从事务细节中解脱出来...

    Spring事务管理

    Spring事务管理是Spring框架的核心特性之一,它提供了一种在Java应用中管理和协调数据库事务的标准方式。对于有Java基础的开发者来说,理解并掌握Spring事务管理至关重要,因为这有助于确保数据的一致性和完整性,...

    Spring事务管理配置文件问题排查

    当出现像描述中那样的问题——SQL语句执行出错但事务未回滚时,我们需要深入理解Spring事务管理的配置和机制。以下是一些关键知识点: 1. **Spring事务管理类型**: - **编程式事务管理**:通过`...

    spring事务管理几种方式代码实例

    spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...

    Spring事务管理和SpringJDBC思维导图

    在思维导图"Spring Transaction.twd"中,可能包含了Spring事务管理的各个概念和它们之间的关系,如事务的ACID属性(原子性、一致性、隔离性和持久性),事务管理器,以及声明式和编程式事务管理的实现方式。...

    Spring事务管理的方法

    ### Spring事务管理的方法 #### 一、引言 在企业级应用开发中,事务管理是一项至关重要的技术。Spring框架作为Java领域中一个非常流行的轻量级框架,为开发者提供了多种方式来实现事务管理,其中主要分为编程式...

Global site tag (gtag.js) - Google Analytics