1.直接上实现
1.1spring的配置文件
<!-- 2.配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 事务控制 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 事务定义有很多构造方法可以设置事务的隔离级别等等 -->
<bean id="txDefinition" class="org.springframework.transaction.support.DefaultTransactionDefinition"></bean>
2.1java代码
//这里是使用springmvc-mybatis的操作方法
/**
只需要关注事务开启就行了
1.事务管理txManager
2.事务定义txDefinition
3.事务状态status
4.进行事务回滚或者提交
**/
//事务管理
@Autowired
private DataSourceTransactionManager txManager;
//事务定义
@Autowired
private DefaultTransactionDefinition txDefinition;
@RequestMapping(value="/findorder",method=RequestMethod.GET)
public String findOrderAndOrderDetail(HttpServletRequest request)
{
//获取事务状态
TransactionStatus status = txManager.getTransaction(txDefinition);
Order order = ordermapper.findOrderAndOrderDetail();
System.out.println(order.toString()+"这是订单一");
Order order2 = ordermapper.findOrderAndOrderDetail();
System.out.println(order2.toString()+"这是订单二");
request.setAttribute("order", order);
txManager.commit(status);
return "order_detail";
}
3.spring 的手动事务一般不怎么使用,但是也有一些特殊情况。对于理解spring的事务也有一定的帮助