第一 创建一个测试实体
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);
}
}
分享到:
相关推荐
2. **事务管理**:通过集成Spring的事务管理器,MyBatis-Spring可以实现声明式事务控制,使得事务的处理变得更加简单和灵活。 3. **Mapper代理**:它会为每个Mapper接口创建一个Spring的Bean,这个Bean是一个动态...
其次,MyBatis-Spring支持Spring的事务管理。它能够自动将MyBatis的操作纳入Spring的全局事务管理中,实现事务的统一控制。这样,开发者无需关心事务的开启、提交、回滚等细节,只需要关注业务逻辑,提高了开发效率...
5. **Transaction Management**:MyBatis-Spring 提供了与 Spring 事务管理的无缝集成,可以使用 Spring 的声明式事务管理来处理数据操作的事务。 在实际项目中,mybatis-spring-1.3.3.jar 包的使用步骤通常包括...
2. **事务管理**:通过Spring的TransactionManager,MyBatis-Spring可以提供声明式事务管理,使得事务控制更加灵活和易于维护。 3. **SqlSessionFactoryBean**:MyBatis-Spring提供了一个SqlSessionFactoryBean,它...
1. **自动事务管理**:整合Spring的声明式事务管理,使得在MyBatis中可以方便地进行事务控制。 2. **SqlSession管理**:避免手动创建和关闭SqlSession,自动在Spring的上下文中处理SqlSession生命周期。 3. **...
2. **事务管理**:MyBatis-Spring支持Spring的声明式事务管理,可以将MyBatis的操作纳入Spring的事务管理范围,确保数据的一致性。 3. **简化SqlSession管理**:通过使用SqlSessionTemplate和SqlSessionDaoSupport...
MyBatis-Spring集成了Spring的事务管理,可以利用@Transactional注解实现声明式事务。当Service层的方法抛出未检查异常(继承自RuntimeException)时,Spring会自动回滚事务;正常返回时,提交事务。 7. **测试**...
Spring还支持数据访问抽象,可以方便地与MyBatis集成。 MyBatis与Spring的整合主要有两种方式:一是基于Spring的Bean工厂管理SqlSessionFactory,二是使用MyBatis-Spring库。在第一种方式中,Spring管理...
随着MyBatis和Spring的发展,mybatis-spring的后续版本可能增加了更多特性,如支持MyBatis的动态SQL、更强大的事务管理等。 总结来说,mybatis-spring-1.1.1是将MyBatis与Spring集成的关键组件,通过它可以充分发挥...
- 事务管理:MyBatis-Spring能够与Spring的事务管理器结合,实现声明式事务管理。 - Mapper接口:编写Mapper接口,接口方法对应SQL语句,通过@Autowired注入到Service层中使用。 - XML映射文件:定义SQL语句和...
它封装了SqlSession的基本操作,如执行SQL语句、处理结果集等,同时也提供了Spring事务管理的支持。 3. **MapperFactoryBean**: 这个工厂Bean允许开发者在Spring容器中注册MyBatis的Mapper接口。它会自动处理Mapper...
5. 事务管理:MyBatis-Spring 将 MyBatis 的操作纳入到 Spring 的事务管理中,通过 Spring 的 PlatformTransactionManager 实现了全局事务控制。这意味着,无论在 Service 层还是 Dao 层,都可以享受到 Spring 的...
- 事务管理:Spring提供了全局的事务管理,可以方便地控制MyBatis的事务边界。 5. 注意事项: - 避免直接在Service层中使用SqlSession,应依赖注入Mapper接口,由MyBatis-Spring管理SqlSession生命周期。 - 确保...
通过这个集成,用户可以在Spring的事务管理、依赖注入和AOP特性中充分利用Mybatis的灵活性。 2. **安装与配置** 首先,你需要在项目中引入Mybatis-Spring的依赖。这通常通过Maven或Gradle的依赖管理来实现。配置...
通过以上步骤,你可以成功地将Mybatis集成到Spring环境中。这种集成使得我们可以充分利用Spring的IoC容器进行对象管理,同时利用Mybatis的灵活性来处理SQL查询。此外,Spring的事务管理功能可以确保数据的一致性,...
4. **Transaction Management**:MyBatis-Spring与Spring的事务管理器配合,可以实现声明式事务管理。只需在Spring配置中定义一个PlatformTransactionManager,MyBatis-Spring就会自动将事务管理应用到所有数据库...
MyBatis-Spring 可以与 Spring 的事务管理器协同工作,通过声明式事务管理实现事务的回滚和提交。当在 Service 层方法上添加 `@Transactional` 注解时,Spring 会自动管理事务的边界。 4. **依赖注入**: 通过 ...
- **事务管理**:MyBatis-Spring 可以配合 Spring 的事务管理器,提供声明式事务管理,使得事务的控制更加简单和统一。 在实际开发中,通过这两个 JAR 文件,开发者可以轻松地在 Spring 应用中使用 MyBatis 进行...
4. **Transaction Management**: MyBatis-Spring提供了Spring事务管理的支持,使得事务边界可以由Spring进行管理。这包括声明式事务和编程式事务,可以根据项目的具体需求选择适合的方式。 5. **ExecutorType**: 在...