`
lyl290932857
  • 浏览: 61418 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mybatis集成spring的事务管理

阅读更多
第一 创建一个测试实体
public class Order {

	private int id;
	private String orderName;
	
	public Order(String orderName) {
		this.orderName = orderName;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getOrderName() {
		return orderName;
	}
	public void setOrderName(String orderName) {
		this.orderName = orderName;
	}
}


第二 创建映射器以及对应的xml

只是做了一个简单的订单映射
public interface OrderMapper {

	void insertOrder(Order order);
}


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.sagaware.mapper.OrderMapper">
<!-- 开启缓存 -->
  <cache />
  <insert id="insertOrder" parameterType="Order" keyProperty="id"        useGeneratedKeys="true">
  	insert into tb_order(name) values (#{orderName}) 
  </insert>
</mapper>



第三步 写一个service类

@Service("orderService")
public class OrderService {

	@Autowired
	private OrderMapper mapper;
	
	/**
	 * 事务处理必需抛出异常 spring 才会帮事务回滚
	 * @param orders
	 */
	@Transactional
	public void insertOrder(List<Order> orders) {
		for(int i = 0 ; i < orders.size() ; i++) {
			if(i < 2) {
				mapper.insertOrder(orders.get(i));
			} else {
				throw new RuntimeException();
		
	}

}
}


第四部 也就是重点,配置spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

	<!-- 数据源 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
	</bean>

	<!-- 开启注解配置 -->
	<context:annotation-config />

	<!-- 扫描service层 -->
	<context:component-scan base-package="com.sagaware.service" />

	<!-- 开启事务注解驱动 -->
	<tx:annotation-driven />

	<!-- 事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 创建SqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="typeAliasesPackage" value="com.sagaware.entity" />
	</bean>

	<!-- 自动扫描映射器 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.sagaware.mapper" />
	</bean>
</beans>


最后 写一个测试类

public class Main {

	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		OrderService service = (OrderService) context.getBean("orderService");
		System.out.println(service);
		List<Order> orders = new ArrayList<Order>();
		for(int i = 0 ; i < 5 ; i++) {
			Order order = new Order("订单" + i);
			orders.add(order);
		}
		service.insertOrder(orders);
	}
}
分享到:
评论
4 楼 weituotian 2016-09-28  
用服务接口的怎么办?
3 楼 郑智睿 2015-04-27  
抛出异常了还怎么获得返回值呢
2 楼 yuanstef 2014-08-22  
抛出异常了还怎么获得返回值呢
1 楼 java0000wa 2013-11-27  
撸主给个demo吧 404305448@qq.com

相关推荐

    mybatis-spring-1.3.1.jar下载

    2. **事务管理**:通过集成Spring的事务管理器,MyBatis-Spring可以实现声明式事务控制,使得事务的处理变得更加简单和灵活。 3. **Mapper代理**:它会为每个Mapper接口创建一个Spring的Bean,这个Bean是一个动态...

    mybatis-spring-1.31.jar

    其次,MyBatis-Spring支持Spring的事务管理。它能够自动将MyBatis的操作纳入Spring的全局事务管理中,实现事务的统一控制。这样,开发者无需关心事务的开启、提交、回滚等细节,只需要关注业务逻辑,提高了开发效率...

    mybatis-spring-1.3.3.jar官方下载

    5. **Transaction Management**:MyBatis-Spring 提供了与 Spring 事务管理的无缝集成,可以使用 Spring 的声明式事务管理来处理数据操作的事务。 在实际项目中,mybatis-spring-1.3.3.jar 包的使用步骤通常包括...

    mybatis-spring-1.3.0.jar 下载

    2. **事务管理**:通过Spring的TransactionManager,MyBatis-Spring可以提供声明式事务管理,使得事务控制更加灵活和易于维护。 3. **SqlSessionFactoryBean**:MyBatis-Spring提供了一个SqlSessionFactoryBean,它...

    mybatis-spring-1.2.0.jar

    1. **自动事务管理**:整合Spring的声明式事务管理,使得在MyBatis中可以方便地进行事务控制。 2. **SqlSession管理**:避免手动创建和关闭SqlSession,自动在Spring的上下文中处理SqlSession生命周期。 3. **...

    mybatis-spring 整合包

    2. **事务管理**:MyBatis-Spring支持Spring的声明式事务管理,可以将MyBatis的操作纳入Spring的事务管理范围,确保数据的一致性。 3. **简化SqlSession管理**:通过使用SqlSessionTemplate和SqlSessionDaoSupport...

    mybatis-spring集成

    MyBatis-Spring集成了Spring的事务管理,可以利用@Transactional注解实现声明式事务。当Service层的方法抛出未检查异常(继承自RuntimeException)时,Spring会自动回滚事务;正常返回时,提交事务。 7. **测试**...

    mybatis和spring的整合包(完整版).rar

    Spring还支持数据访问抽象,可以方便地与MyBatis集成。 MyBatis与Spring的整合主要有两种方式:一是基于Spring的Bean工厂管理SqlSessionFactory,二是使用MyBatis-Spring库。在第一种方式中,Spring管理...

    mybatis-spring-1.1.1-bundle

    随着MyBatis和Spring的发展,mybatis-spring的后续版本可能增加了更多特性,如支持MyBatis的动态SQL、更强大的事务管理等。 总结来说,mybatis-spring-1.1.1是将MyBatis与Spring集成的关键组件,通过它可以充分发挥...

    mybatis,mybatis-spring

    - 事务管理:MyBatis-Spring能够与Spring的事务管理器结合,实现声明式事务管理。 - Mapper接口:编写Mapper接口,接口方法对应SQL语句,通过@Autowired注入到Service层中使用。 - XML映射文件:定义SQL语句和...

    mybatis-spring.jar整合包(包含两个版本,有源码jar包)

    它封装了SqlSession的基本操作,如执行SQL语句、处理结果集等,同时也提供了Spring事务管理的支持。 3. **MapperFactoryBean**: 这个工厂Bean允许开发者在Spring容器中注册MyBatis的Mapper接口。它会自动处理Mapper...

    mybatis-spring-1.0.1-bundle.zip

    5. 事务管理:MyBatis-Spring 将 MyBatis 的操作纳入到 Spring 的事务管理中,通过 Spring 的 PlatformTransactionManager 实现了全局事务控制。这意味着,无论在 Service 层还是 Dao 层,都可以享受到 Spring 的...

    mybatis-spring整合jar包

    - 事务管理:Spring提供了全局的事务管理,可以方便地控制MyBatis的事务边界。 5. 注意事项: - 避免直接在Service层中使用SqlSession,应依赖注入Mapper接口,由MyBatis-Spring管理SqlSession生命周期。 - 确保...

    Mybatis-Spring-1.2.2中文文档.zip

    通过这个集成,用户可以在Spring的事务管理、依赖注入和AOP特性中充分利用Mybatis的灵活性。 2. **安装与配置** 首先,你需要在项目中引入Mybatis-Spring的依赖。这通常通过Maven或Gradle的依赖管理来实现。配置...

    Mybatis集成Spring的实例代码_动力节点Java 学院整理

    通过以上步骤,你可以成功地将Mybatis集成到Spring环境中。这种集成使得我们可以充分利用Spring的IoC容器进行对象管理,同时利用Mybatis的灵活性来处理SQL查询。此外,Spring的事务管理功能可以确保数据的一致性,...

    mybatis-spring最新整合包

    4. **Transaction Management**:MyBatis-Spring与Spring的事务管理器配合,可以实现声明式事务管理。只需在Spring配置中定义一个PlatformTransactionManager,MyBatis-Spring就会自动将事务管理应用到所有数据库...

    mybatis-spring-1.2.3.zip

    MyBatis-Spring 可以与 Spring 的事务管理器协同工作,通过声明式事务管理实现事务的回滚和提交。当在 Service 层方法上添加 `@Transactional` 注解时,Spring 会自动管理事务的边界。 4. **依赖注入**: 通过 ...

    mybatis+mybatis-springjar包

    - **事务管理**:MyBatis-Spring 可以配合 Spring 的事务管理器,提供声明式事务管理,使得事务的控制更加简单和统一。 在实际开发中,通过这两个 JAR 文件,开发者可以轻松地在 Spring 应用中使用 MyBatis 进行...

    mybatis-spring-1.3.1

    4. **Transaction Management**: MyBatis-Spring提供了Spring事务管理的支持,使得事务边界可以由Spring进行管理。这包括声明式事务和编程式事务,可以根据项目的具体需求选择适合的方式。 5. **ExecutorType**: 在...

Global site tag (gtag.js) - Google Analytics