SSM框架-Spring4
目录一、使用Spring整合Mybatis二、Spring的事务处理1.什么是事务2.Spring的事务管理的API3.使用XML完成Spring的事务配置4.Spring中事务使用注意5.使用注解完成事务一、使用Spring整合Mybatis1.需要写一个除了spring.xml配置文件以外的配置文件这个配置文件中使用的约束是和spring.xml配置文件的的约束是一致的。2.在这个新写的配置文件中使用bean标签去接管spring-jdbc-x.x.x.RELEASE.jar包下面的包org.springframework.jdbc.datasource.DriverManagerDataSource中的DriverManagerDataSource类这个相当于定义了一个数据源。3.接管完DriverManagerDataSource类之后需要给这个类中的连接数据库的参数去赋值使用property标签。4.使用context:property-placeholder locationclasspath:db.properties/context:property-placeholder标签去加载连接数据库的参数文件db.properties是参数文件。5.最后使用property namedriverClassName value${mysql.driver}/property标签去动态的获取db.propertioes参数文件中的连接数据库的参数${这个里面的参数文件的的key}。6.完成上面一系列操作之后就可以去创建SqlSessionFactory对象了创建这个对象需要使用bean标签去接管mybatis-spring-x.x.x.jar包下面的包org.mybatis.spring.SqlSessionFactoryBean中的SqlSessionFactoryBean类。这个mybatis-spring-x.x.x.jar包是spring和mybatis的整合包。1注意这个bean标签的id可以写也可以不写因为这个类创建出对象后并不需要我们去调用它是由系统调用的。7.接下来我们需要对这个SqlSessionFactoryBean类中所持有的DataSource属性去赋值这个DataSource代表了数据源使用property namedataSource ref上面定义数据源的bean标签的id/property这个标签去赋值。8.扫描mapper包下面的所有的接口使用bean对象接管mybatis-spring-x.x.x.jar包下面的包org.mybatis.spring.mapper.MapperScannerConfigurer中的MapperScannerConfigurer类。9.接下来我们需要对MapperScannerConfigurer类中的basePackage属性赋值使用property namebasePackage valuemapper包所在的路径/property标签去赋值。10.案例?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:contexthttp://www.springframework.org/schema/context xsi:schemaLocation http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd !--从src目录下加载db.properties文件,classpath表示从src目录下开始-- context:property-placeholder locationclasspath:db.properties/context:property-placeholder !--数据源DriverManagerDataSource dataSource new DriverManagerDataSource()-- bean iddataSource classorg.springframework.jdbc.datasource.DriverManagerDataSource property namedriverClassName value${mysql.driver}/property property nameurl value${mysql.url}/property property nameusername value${mysql.username}/property property namepassword value${mysql.password}/property /bean !--相当于SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSessionFactoryBean是spring中提供用来整合mybatis的类 SqlSessionFactoryBean对象由spring容器根据类型从bean的缓存池中找到使用 -- bean classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/property /bean !--扫描com.spring.mapper包下所有接口-- bean classorg.mybatis.spring.mapper.MapperScannerConfigurer property namebasePackage valuecom.spring.mapper/property /bean /beans二、Spring的事务处理1.什么是事务1事务逻辑上的一组操作组成这组操作的各个单元要么全都成功要么全都失败。2.Spring的事务管理的API1Platform TransctionManager平台事务管理器接口是Spring用于管理事务的真正的对象DataSourceTransactionManager底层使用JDBC管理事务。HibernateTransactionManager底层使用Hibernate管理事务2TransactionDefinition事务定义信息用于定义事务的相关的信息隔离级别、超时信息、传播行为(DML)、是否只读(查询)。3TransactionStatus事务的状态用于记录在事务管理过程中事务的状态的对象。4事务管理的API的关系Spring进行事务管理的时候首先平台事务管理器根据事务定义信息进行事务的管理在事务管理过程中产生各种状态将这些状态的信息记录到事务状态的对象中。Spring的事务的传播行为Spring中提供了七种事务的传播行为保证多个操作在同一个事务中PRORAGATION_REQUIRED默认值(一般都只要用这个)如果A中有事务使用A中的事务如果A中没有事务则创建一个新的事务将操作包含进来。PROPAGATION_SUPPORTS支持事务如果A中有事务使用A中的事务。如果A没有事务则不使用事务。PROPAGATION_MANDATORY如果A中有事务使用A中的事务。如果A没有事务抛出异常。保证多个操作不在同一个事务中PROPAGATION_REQUIRES_NEW如果A中有事务将A的事务挂起(暂停)创建新事务只包含自身操作。如果A中没有事务创建一个新事务包含自身操作。PROPAGATION_NOT_SUPPORTED如果A中有事务将A的事务挂起。不使用事务管理。PROPAGATION_NEVER如果A中有事务报异常。嵌套式事务PROPAGATION_NESTED嵌套事务如果A中有事务按照A的事务执行执行完成后设置一个保存点执行B中的操作如果没有异常执行通过如果有异常可以选择回滚到最初位置也可以回滚到保存点。3.使用XML完成Spring的事务配置1需要先配置事务管理器的切面也就是使用bean标签去接管包org.springframework.jdbc.datasource.DataSourceTransactionManager中的DataSourceTransactionManager类前面说过这个类是Spring用于管理事务的对象。2接管完成后使用property去为这个类中的dataSource属性去赋值赋值一个数据源就可以了可以使用前写过的。3接下来就是去配置事务的传播行为使用下面的一组标签其中tx:method nametransferAccount propagationREQUIRED/这个标签的name属性代表了你要使用事务的方法名必须和你要使用事务的方法名一致不然事务不生效propagation属性代表的就是传播行为而外层的tx:advice标签中的属性transaction-manager的值是上面配置事务管理器的切面时使用bean标签接管DataSourceTransactionManager类的bean标签id。tx:advice idabc transaction-managertransactionMananger tx:attributes tx:method nametransferAccount propagationREQUIRED/ /tx:attributes /tx:advice4最后在把事务传播行为应用到指定的方法上使用aop:config/aop:config然后在这个aop:config标签之间使用aop:advisor id上面配置事务传播行为的最外层标签的id pointcutexecution(* 包名.类名.方法名(..))/aop:advisor标签将事务传播行为应用到指定的方法上。5案例?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:aophttp://www.springframework.org/schema/aop xmlns:txhttp://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/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd !-- bean definitions here -- !-- 配置事物管理器的切面 Spring中使用DataSourceTransactionManager对象来管理事务这里可以设置事务的传播行为 DataSourceTransactionManager transactionMananger new DataSourceTransactionManager() -- bean idtransactionMananger classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !-- 配置事物传播行为 其实就是哪些方法应该受什么样的事物控制-- tx:advice idabc transaction-managertransactionMananger tx:attributes tx:method nametransferAccount propagationREQUIRED/ /tx:attributes /tx:advice !-- 把REQUIRED事务传播行为应用到指定的方法(transferAccount)上 使用spring的aop编程获取到需要使用事务的切入点(方法)transferAccount() -- aop:config aop:advisor advice-refabc pointcutexecution(* com.spring.service.impl.AccountServiceImpl.transferAccount(..))/ /aop:config /beans4.Spring中事务使用注意1spring对事务的处理是在底层捕捉RuntimeException异常进行处理的所以在有事务的地方不要手动try catch异常信息否则事务会失效。5.使用注解完成事务1需要先配置事务管理器的切面也就是使用bean标签去接管包org.springframework.jdbc.datasource.DataSourceTransactionManager中的DataSourceTransactionManager类前面说过这个类是Spring用于管理事务的对象。2开启注解方式事务的处理使用tx:annotation-driven transaction-manager上面配置切面时使用bean标签接管类的bean标签id /tx:annotation-driven标签。3在需要使用注解的方法上面加一个Transactional(propagation Propagation.REQUIRED)注解就可以了括号中是用来配置事务的传播行为的。4案例?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:aophttp://www.springframework.org/schema/aop xmlns:txhttp://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/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd !-- bean definitions here -- !-- 配置事物管理器的切面 Spring中使用DataSourceTransactionManager对象来管理事务这里可以设置事务的传播行为 DataSourceTransactionManager transactionMananger new DataSourceTransactionManager() -- bean idtransactionMananger classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean !--开启注解方式事务的处理-- tx:annotation-driven transaction-managertransactionMananger /tx:annotation-driven /beans

相关新闻

Windows系统Anaconda安装配置全攻略:从下载到环境管理

Windows系统Anaconda安装配置全攻略:从下载到环境管理

1. 项目概述:为什么在Windows上安装Anaconda是数据科学的第一步如果你刚开始接触Python编程、数据分析或者机器学习,那么Anaconda这个名字你肯定不陌生。它远不止是一个Python发行版,而是一个为你量身打造的数据科学“全家桶”。想象一下&…

2026/8/3 2:50:07 阅读更多 →
Timeline‑Studio:基于Agent Skill,实现浏览器端AI智能体全自动剪辑

Timeline‑Studio:基于Agent Skill,实现浏览器端AI智能体全自动剪辑

前言 市面上多数AI剪辑产品,本质是调用云端接口生成视频,AI只能拿到最终生成结果,无法真正操作编辑器UI界面。一旦碰到素材加载失败、弹窗、时间轴边界异常,自动化流程直接中断。 Timeline‑Studio是开源浏览器本地AI视频编辑器…

2026/8/3 2:50:07 阅读更多 →
Cadence Allegro PCB设计进阶:Shape铺铜与Line走线高效修改实战指南

Cadence Allegro PCB设计进阶:Shape铺铜与Line走线高效修改实战指南

1. 从“能用”到“好用”:为什么Shape和Line的修改是PCB设计的核心在Cadence Allegro这个庞大的PCB设计工具里,铺铜(Shape)和走线(Line)的修改,可能是我们每天点击次数最多的操作。很多工程师&a…

2026/8/3 2:50:07 阅读更多 →

最新新闻

Blender MMD Tools插件深度解析:从格式鸿沟到创作自由的完整技术路径

Blender MMD Tools插件深度解析:从格式鸿沟到创作自由的完整技术路径

Blender MMD Tools插件深度解析:从格式鸿沟到创作自由的完整技术路径 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mm…

2026/8/4 9:35:36 阅读更多 →
Claude中转站用于私域运营:话术生成、用户分层与活动跟进

Claude中转站用于私域运营:话术生成、用户分层与活动跟进

在真实业务里,私域运营并不是一个孤立动作,而是一组连续任务。很多团队刚开始只想通过模型完成某个小功能,例如生成一段内容、整理一份资料、分类一批数据,或者辅助某个成员提高效率。但当任务进入日常运行后,大家会发…

2026/8/4 9:35:36 阅读更多 →
智能客控厂家怎么选7个硬指标筛选靠谱供应商

智能客控厂家怎么选7个硬指标筛选靠谱供应商

酒店业主选客控厂家,常被功能清单晃花眼。真正要盯的是研发、案例、服务、定制、安全、认证、响应七个硬指标。本文给出一套可打分的筛选清单,奥莱维作为多项全覆盖厂商可作范例参考。一、7个硬指标评分卡研发能力:自研比例、专利与软著数量。…

2026/8/4 9:35:36 阅读更多 →
PHP CURL POST请求实战:从基础配置到企业级应用

PHP CURL POST请求实战:从基础配置到企业级应用

1. 为什么PHP开发者需要掌握CURL发送POST请求? 在API对接和网络通信领域,CURL堪称PHP开发者的瑞士军刀。我经历过无数次API对接项目,发现90%的接口调用问题都源于对CURL配置理解不透彻。POST请求作为最常用的HTTP方法之一,在用户注…

2026/8/4 9:35:36 阅读更多 →
【单片机毕业设计推荐】基于 STM32 的人体生理参数监测装置设计与实现 基于 STM32 的心率血氧体温采集与蓝牙监测系统设计(013205)

【单片机毕业设计推荐】基于 STM32 的人体生理参数监测装置设计与实现 基于 STM32 的心率血氧体温采集与蓝牙监测系统设计(013205)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能技术路线项目演示关于我们项目案例源码获取温馨提示:本人主页置顶文章(点我)有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)有 CSDN 平台官…

2026/8/4 9:34:36 阅读更多 →
A-Lin南昌站和歌迷双向整活 「歌迹」现场接梗名场面频出

A-Lin南昌站和歌迷双向整活 「歌迹」现场接梗名场面频出

7月31日、8月2日,天生歌姬A-Lin黄丽玲携「歌迹 Journey」巡回演唱会在南昌国际体育中心体育馆,为豫章歌迷奉上诚意满满的视听盛宴。两晚演出不仅安排南昌限定歌单彩蛋、全新舞台造型,舞台之上趣味互动更是不间断:超近距离与歌迷互…

2026/8/4 9:34:36 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →