Spring声明式事务

1.概念 

  • 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元
  • 一个使用Mybatis-Spring的主要原因是它允许Mybatis参与到Spring的事务管理中,而不是给Mybatis创建一个新的专用事务管理器 

2.步骤

2.1.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:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"><!--Spring整合Mybatis,省略了Mybatis的核心配置文件,转而在Spring的配置文件中配置Mybatis--><!--datasource--><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/user?useSSL=false&amp;useUnicode=true&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="classpath:mybatis-config.xml"/>--><property name="mapperLocations" value="classpath:com/sun/mapper/*.xml"/></bean><!--SqlSessionTemplate:就是我们使用的sqlSession,这个是spring提供的--><bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><!--我们只能使用构造器注入,因为没有set方法--><constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/></bean><bean id="UserMapperImpl" class="com.sun.mapper.UserMapperImpl"><property name="sqlSessionTemplate" ref="sqlSessionTemplate"/></bean>
</beans>
 2.2.配置声明式事务
<!--配置声明式事务-->
<bean id="transationManage" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>
</bean>
2.3.用AOP的方式实现事务
    <!--结合AOP实现事务的织入--><!--第一步:配置事务的通知--><tx:advice id="txAdvice" transaction-manager="transationManage"><tx:attributes><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice>
2.4.配置事务切入
    <aop:config><aop:pointcut id="PointCut" expression="execution(* com.sun.mapper.*.*(..))"/><aop:advisor advice-ref="txAdvice" pointcut-ref="PointCut"/></aop:config>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/662821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如果你也觉得自己不够聪明,也缺乏才华。。。

​在追求成功的道路上&#xff0c;我们常常自我怀疑&#xff0c;感觉自己不够聪明&#xff0c;缺乏必要的才华。然而&#xff0c;正是这种自我感知&#xff0c;如果处理得当&#xff0c;可以成为我们最大的优势。这篇文章旨在为那些怀疑自己的能力&#xff0c;但依然渴望在工作…

图片热区功能

一、需求描述及效果图 1.需求描述&#xff1a; 根据后端返回的坐标及人员信息&#xff0c;在图片上的相应位置添加图片热区功能&#xff0c;点击可展示出对应的人员信息。 图片可进行缩放 2.示例&#xff1a; &#xff08;定位是随便写的&#xff0c;仅做示例&#xff09; …

Mac用Crossover玩《幻兽帕鲁》手柄不能用怎么办? Mac电脑玩《幻兽帕鲁》怎么连接手柄? 幻兽帕鲁玩家超1900万

2024年首款爆火Steam平台的游戏《幻兽帕鲁》&#xff0c;在使用Crossover后可以用Mac系统玩了&#xff0c;很多玩家喜欢通过手柄玩游戏&#xff0c;它拥有很好的握持体验&#xff0c;长时间玩也不会很累&#xff0c;所以很多《幻兽帕鲁》玩家都喜欢用手柄来操作&#xff0c;很多…

Docker 容器jar 运行报错 at sun.awt.FontConfiguration.getVersion 解决方法

docker jar 运行报错 at sun.awt.FontConfiguration.getVersion 初步判断是在运行 Docker 容器中的 JAR 文件时遇到了与字体配置相关的问题。这个问题可能是由于容器内缺少字体配置或字体文件而引起的。 要解决这个问题&#xff0c;你可以尝试以下方法&#xff1a; 1.安装字…

史上最全知识图谱建模实践(下):多元关系架构

在“知识图谱之本体结构与语义解耦——基于OpenSPG的建模实践&#xff08;上&#xff09;”一文中&#xff0c;我们从实体关系设计和概念语义建模2种场景&#xff0c;讲解了基于SPG的知识建模的方法和案例。 本文中&#xff0c;我们将继续讲解多元关系架构场景中的知识建模实践…

构建云安全防线:企业必备的10大能力解析

云计算技术为现代企业组织带来了可扩展性、灵活性、减少物理基础设施、降低运营成本以及全天候的数据访问等诸多好处。但研究数据也显示&#xff0c;目前只有4%的企业组织能够为云端资产提供充分的安全保护。在2023年&#xff0c;有超过80%的数据泄露事件涉及存储在云端的数据。…

Vue3基本概念

script部分 export default对象的属性&#xff1a; name&#xff1a;组件的名称 components&#xff1a;存储中用到的所有组件 props&#xff1a;存储父组件传递给子组件的数据 watch()&#xff1a;当某个数据发生变化时触发 computed&#xff1a;动态计算某个数据 setup(pro…

json文件缺少的语言key的检测

需求 在做多语言的项目的时候&#xff0c;需要对当前不同语言的key的差异进行对比并且找出缺少key的语言和具体的语言key 通过node的文件读取能力进行需求的实现 const fs require(fs) const path require(path); const lodash require(lodash); // 目的是找出多语言文件中…

基于C/C++的MFC的IDC_MFCEDITBROWSE2控件不显示ico问题记录

打开资源文件 *.rc文件 &#xff0c;在最上方添加 #if !defined(_AFXDLL) #include "afxribbon.rc" // MFC ribbon and control bar resources #endif 如下图所示&#xff1a;

解决pandas写入excel时的ValueError: All strings must be XML compatible报错

报错内容&#xff1a; ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters 报错背景 用pands批量写入excel文件&#xff0c;发生编码报错。检索了很多方案&#xff0c;都不能解决。 导致报错的原因是存在违法字符&…

米贸搜|Facebook公共主页反馈分数(ACE) 更新

前段时间Meta改进了公共主页反馈分数的仪表板&#xff0c;发现有部分广告主似乎没有接受到这条动态&#xff0c;今天为大家整理出更新内容&#xff0c;方便各位广告主了解学习&#xff01; Meta重新设计了公共主页反馈分数仪表板&#xff0c;以便广告主能更轻松地了解总体反馈…

【INTEL(ALTERA)】为什么 F-tile Serial Lite IV FPGA IP 设计示例会失败

说明 由于Intel Agilex 7 FPGA I 系列收发器-SoC 开发套件的时钟控制器 GUI 存在问题&#xff0c;当您需要配置芯片 Si5332 的 OUT1 时钟频率时&#xff0c;您可能会发现 F-tile Serial Lite IV 英特尔 FPGA IP设计示例失败。这是因为此 Si5332 GUI 存在问题;无法准确配置 OUT…

8. Threejs案例-SVG渲染器和WEBGL渲染器对比

8. Threejs案例-SVG渲染器和WEBGL渲染器对比 实现效果 知识点 SVG渲染器 (SVGRenderer) SVGRenderer 被用于使用 SVG 来渲染几何数据&#xff0c;所产生的矢量图形在以下几个方面十分有用&#xff1a; 动画标志 logo 或者图标 icon可交互的 2D 或 3D 图表或图形交互式地图复…

《拳皇97》中的人物性格——麻宫雅典娜

在充满热血与激情的《拳皇97》世界中,有一位身披粉红战袍、手持麦克风当武器的女性角色脱颖而出,她就是我们的甜美格斗家——麻宫雅典娜。这位看似柔弱却内藏坚韧的偶像歌手,以其独特的性格魅力和幽默生动的表现方式,在格斗场上演绎了一幕幕让人捧腹又感动的瞬间。 首先,让…

【C++11(一)】列表初始化and右值引用

一、 统一的列表初始化 1.1 &#xff5b;&#xff5d;初始化 在C98中&#xff0c;标准允许 使用花括号{}对数组或者结构体元素 进行统一的列表初始值设定 C11扩大了用大括号 括起的列表(初始化列表)的使用范围 使其可用于所有的内置类型和 用户自定义的类型 使用初始化列表时…

Flutter 解决ExpansionTile上下分割线问题,以及title撑满问题

文章目录 前言一、解决上下分割线问题二、使ExpansionTile的title撑满总结 前言 最近在做flutter项目&#xff0c;其中的一个功能用到了ExpansionTile的效果&#xff0c;奈何我们的设计师要求很高&#xff0c;展开的时候不能有上下一根线&#xff0c;而且我们是不需要展开的按…

nginx反向代理----->微服务网关----->具体微服务

今天&#xff0c;做项目的时候做项目的时候配路由出现bug&#xff0c;特此理顺一下从nginx到微服务网关再到微服务这一过程。 nginx配置 upstream admin-gateway{server localhost:21217; }server {listen 8803;location / {root F:/develop/admin-web/;index index.html;}…

十六、Vben框架table内部合并行

在vben项目中合并内部的行是一个常规的操作,以前我们说过如果是一条数据内部只需要分割拿高撑开就可以实现,在第三章的时候我们已经讲过了,那么如果是不定的条数合并为一条数据呢,怎么能够实现呢,下面我们就来讲讲。 先看效果图 如图,能看到是三条数据,其实是…

数据库复试—SQL查询举例

数据库复试—SQL查询举例&#xff08;续&#xff09; 单表查询实例 查询年龄在20到23岁之间的学生信息 select * from student where sage between 20 and 30; ------------------------------------- | Sno | Sname | Ssex | Sage | Sdept | -------------------------…

【Django-ninja】django ninja中使用查询过滤器FilterSchema

Django ORM中过滤器 filter的基本用法 filter() 是 QuerySet 对象的一个方法&#xff0c;用于从数据库中过滤数据。它接受一个或多个关键字参数&#xff0c;每个参数都表示一个查询条件&#xff0c;它们之间是 AND 关系。 以下是 filter() 方法的基本用法示例&#xff1a; fr…