spring+mybatis事务配置

原创 2016年08月28日 23:11:37

基于注解的spring的声明式事务配置:

<span style="white-space:pre">	</span><!-- 全注解Sping事务管理配置(@Transactional(rollbackFor = Exception.class)) -->
	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<span style="color:#ff0000;"><property name="dataSource" ref="dataSource" /></span>
	</bean>
	<!--启动spring事物注解驱动-->
	<tx:annotation-driven transaction-manager="txManager"/>

<span style="white-space:pre">	</span><!-- MyBatis配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与DataSourceTransactionManager引用的数据源一致即可(红色部分)-->
	<bean id="sqlSessionFactoryBean" class="com.kev.team.framework.dao.mybatis.SqlSessionFactoryBean">
		<span style="color:#ff0000;"><property name="dataSource" ref="dataSource" /></span>
		<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
		<!-- 需要映射的包路径 -->
		<property name="typeAliasesPackage" value="com.kev.team.**" />
		<property name="mapperLocations">
			<list>
				<value>classpath:com/kev/team/**/*Mapper.xml</value>
			</list>
		</property>
	</bean>
<!-- 添加tx命名空间 -->
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

使用实例:

@Transactional
	public void insertStyle(GoodsDetail goodsDetail) {
		Goods goods = goodsDao.selectByNo(goodsDetail.getGoodsNo());
		List<GoodsDetail> detail = goodsDao.getGoodsDetailByGoodsNo(goodsDetail.getGoodsNo());
		int flag = 0, flag1 = 0;
		String goodsStyleIds = goods.getGoodsStyleIds();
		if (goodsStyleIds == null) {
			goods.setGoodsStyleIds(goodsDetail.getGoodsSizeId() + "," + goodsDetail.getGoodsColorId());
		} else {
			goods.setGoodsStyleIds(goodsStyleIds + "," + goodsDetail.getGoodsSizeId() + ","
					+ goodsDetail.getGoodsColorId());
		}
		int styleStock = goodsDetail.getGoodsStock();
		for (int i = 0; i < detail.size(); i++) {
			styleStock += detail.get(i).getGoodsStock();
		}
		if (goods.getGoodsstock() >= styleStock) {
			flag = goodsDao.insertStyle(goodsDetail);
			flag1 = goodsDao.updateByPrimaryKey(goods);
			if ((flag + flag1) != 2) {
				throw new RuntimeException("事务发生回滚,请检查颜色尺码数据是否正确!!");
			}
		} else {
			throw new RuntimeException("库存不足,请调整数量!!");
		}
	}

添加@Transactional注解的方法,相当于在方法开始前添加事务开始代码,在方法结束后添加事务结束代码,

所以该方法必须抛出异常到方法结束处,事务才会回滚。

异常可以在方法调用处try catch,以得到程序需要的适当返回。




相关文章推荐

maven 项目(三) spring集成mybatis事务配置(扫描注解)

都是一劳永逸的方式: xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:aop="http://www.springf...

spring+springMVC+mybatis:事务配置

一.前言事务配置了大概一个上午终于成功了,因为资料很多,反而找不到一个适合自己且能走得通得方案,几经配置,总算是成功了,是否完美还待考证,至少目前想要的需求是可以满足了。 系统架构:spring+s...

配置spring+Mybatis事务时产生的jar包冲突问题

java.lang.NoSuchMethodError: org.springframework.transaction.support.TransactionSynchronizationManag...

spring mybatis事务回滚配置

1、配置mybatis数据源

spring,mybatis事务管理配置与@Transactional注解使用

spring,mybatis事务管理配置与@Transactional注解使用 概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。 Spring Framewo...
  • schuy
  • schuy
  • 2014年02月16日 15:25
  • 593

spring+mybatis+Atomikos JTA事务配置说明

一、概览 Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品。产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTran...

MyBatis搭配spring和事务配置

我这里做的例子是mybatis。一:需要的jar mysql mysql-connector-java 5.1....
  • faicm
  • faicm
  • 2016年08月29日 19:11
  • 928

Spring3.0和Mybatis的集成,含事务配置

[2012年3月13日12:11:57 add  如果不想CTRL+C CTRL+V只想看效果的同志请移步至http://code.google.com/p/ssm-study/]    ...

spring4+mybatis3+atomikos3.9多数据源分布式事务控制配置(备用)

pom文件关键jar一览 dependency> groupId>org.springframeworkgroupId> artifa...

spring boot配置mybatis和事务管理

Spring Boot配置Mybatis一、spring boot与mybatis的配置1.首先,spring boot 配置mybatis需要的全部依赖如下: org.springframewor...
  • wohaqiyi
  • wohaqiyi
  • 2017年06月07日 08:37
  • 13071
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring+mybatis事务配置
举报原因:
原因补充:

(最多只允许输入30个字)