Spring ----> 事务传播配置 与 事务传播含义理解 (十二)

前言

本章节案例 使用的是声明式事务;在原来Spring-mybatis整合后的基础上进行学习事务。

一、事务分类:
  • 声明式事务:AOP

  • 编程式事务:需要在代码中,进行事务的管理

事务介绍:
  • 一个使用 MyBatis-Spring 的其中一个主要原因是它允许 MyBatis 参与到 Spring 的事务管理中。而不是给 MyBatis 创建一个新的专用事务管理器,MyBatis-Spring 借助了 Spring 中的 DataSourceTransactionManager 来实现事务管理。

  • 一旦配置好了 Spring 的事务管理器,你就可以在 Spring 中按你平时的方式来配置事务。并且支持 @Transactional 注解和 AOP 风格的配置。在事务处理期间,一个单独的 SqlSession 对象将会被创建和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。

  • 事务配置好了以后,MyBatis-Spring 将会透明地管理事务。这样在你的 DAO 类中就不需要额外的代码了。

事务标准配置

要开启 Spring 的事务处理功能,在 Spring 的配置文件中创建一个 DataSourceTransactionManager 对象:

<bean id="transactionManager" 	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg ref="dataSource" />
</bean>

事 务 案 例 创 建 步 骤 如 下 :

1、根据上一章节的案例把pom.xml 文件进行环境依赖配置。

	详见上一章节的spring的整合配置文件

2、新建项目,创建所需要的包名+类名(创建出来)。
在这里插入图片描述

3、编写实体类
这个实体类是在数据库中实际存在的一张表。
在这里插入图片描述

4、编写业务接口(UserMappe.xml)
在这里插入图片描述

5、编写UserMappe.xml的sql 语句。
在这里插入图片描述

6、编写业务接口实现类(这里是为了代替mybatis 的配置。使用了Spring-mybatis整合后的第二种方式,可能比较常用)
在这里插入图片描述

7、编写Spring的核心配置文件并且开启并配置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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/aop/spring-tx.xsd">
<import resource="applicationcontext.xml"/>
<!--bean  -->
<bean id="UserMapper" class="com.ZQQQ.pojo.UserMapperimpl">
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>

<!--在Spring 中 配置声明式事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <constructor-arg ref="dataSource" />
</bean>

<!--结合AOP  实现事务的织入 -->
<tx:advice  id="txAdvice" transaction-manager="transactionManager">
    <!--给哪些方法配置事务 -->
    <tx:attributes>
        <tx:method name="adduser" propagation="REQUIRED"/>
        <tx:method name="deleteuser" propagation="REQUIRED"/>
        <tx:method name="update" propagation="REQUIRED"/>
        <tx:method name="query" read-only="true"/>
        <tx:method name="*" propagation="REQUIRED"/>
    </tx:attributes>
</tx:advice>

<!--配置事务的切入点-->
<Aop:config>
    <Aop:pointcut id="pointcut" expression="execution(* com.ZQQQ.pojo.*.*(..))"/>
    <Aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</Aop:config>

8、配置Spring和mybatis 的整合文件这里命名为:applicationcontext.xml

<?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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd">
<!--配置数据源 使用Spring自带的数据源替换mybatis的配置-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;serverTimezone=UTC&amp;characterEncoding=UTF-8"/>
    <property name="username" value="root"/>
    <property name="password" value="123456"/>
 </bean>
<!-- sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!--绑定配置文件-->
    <property name="configLocation" value="Mybatis-config.xml"/>
    <property name="mapperLocations" value="UserMapper.xml"/>
</bean>
    <!--SqlSessionTemplate:就是我们在mybatis 中使用的SqlSession -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
<bean id="usermapper" class="com.ZQQQ.pojo.UserMapperimpl">
    <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
</beans>

9、编写mybatis的核心配置文件

解释:

  • 编写setting 标签是代表开启驼峰命名
  • 其中,typeAliases 标签允许有一个或多个 或 标签。
  • typeAlias 标签用来为一个 JavaBean 指定别名,type 属性指定 JavaBean 类型,alias 属性指定别名名称。如
    在这里插入图片描述
    在这里插入图片描述
    10、测试用例

在这里插入图片描述

二、Spring 中7种事务传播含义:

在这里插入图片描述

-----------------------------------------要克服生活的焦虑和沮丧,得先学会做自己的主人-----------------------------------------

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值