当前位置: 首页 > news >正文

Mybatis---事务

目录

引入

一、事务存在的意义

1.事务是什么?

2.Mybatis关于事务的管理

程序员自己控制处理的提交和回滚


 

引入

一、事务存在的意义

1.事务是什么?

多个操作同时进行,那么同时成功,那么同时失败。这就是事务。

事务有四个特性:一致性、持久性、原子性、隔离性

比如有一个订单业务:

1.订单表当中添加一条记录

2.商品数量数据更新(减少)

3.....

 当多个任务同时进行操作的时候,这些任务只能同时成功,或者同时失败(即引入中的转账操作)。

2.Mybatis关于事务的管理

MyBatis框架中的事务默认是手动提交的,也就是每次编写程序都需要调用commit()方法提交事务。

程序员自己控制处理的提交和回滚

SqlMapConfig.xml文件中配置:

<transactionManager type="JDBC"></transactionManager>  ====》程序员自己控制处理的提交和回滚

设置自动提交事务,可以通过openSession的方法进行设置,openSession(true) 自动提交事务。代码如下:(配置中的策略不变)

public class UserTest {private InputStream in = null;private SqlSession session = null;private UserDao mapper = null;@Before  //前置通知, 在方法执行之前执行public void init() throws IOException {//加载主配置文件,目的是为了构建SqlSessionFactory对象in = Resources.getResourceAsStream("SqlMapConfig.xml");//创建SqlSessionFactory对象SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//通过SqlSessionFactory工厂对象创建SqlSesssion对象session = factory.openSession(true);  //关闭//通过Session创建UserDao接口代理对象mapper = session.getMapper(UserDao.class);}@After  //@After: 后置通知, 在方法执行之后执行 。public void destory() throws IOException {//释放资源session.close();in.close();}@Testpublic void insertMoreByList(){User user1 = new User("a1","男","北京");User user2 = new User("a2","男","北京");User user3 = new User("a3","男","北京");List<User> users = Arrays.asList(user1,user2,user3);int result = mapper.insertMoreByList(users);//session.commit();  //手动提交事务System.out.println(result);}}

 为了程序安全性,在涉及commit()事务提交的方法中配置:

  @Testpublic void Insert(){User user=new User("aa",new Date(),"男","保定");mapper.insert(user);try{session.commit();//事务提交}catch (Exception e){session.rollback();//回滚(一旦发现try中的语句没执行成功,立刻回滚程序)}finally {if(session!=null){session.close();}}}

相关文章:

Mybatis---事务

目录 引入 一、事务存在的意义 1.事务是什么&#xff1f; 2.Mybatis关于事务的管理 程序员自己控制处理的提交和回滚 引入 一、事务存在的意义 1.事务是什么&#xff1f; 多个操作同时进行,那么同时成功&#xff0c;那么同时失败。这就是事务。 事务有四个特性&#xf…...

企业直播间媒体分发新闻转播拉流推广名单(金融财经科技类)

【本篇由 言同数字媒体直播分发 原创】随着直播与短视频成为各大企业营销的重要手段&#xff0c;如何选择合适的视频平台进行内容分发与拉流成为了企业关注的焦点。对于财经和科技类企业而言&#xff0c;选择具有专业受众群体和广泛传播能力的平台尤为重要。下面是一些可以帮助…...

华为FreeBuds Pro 4丢了如何找回?(附查找功能使用方法)

华为FreeBuds Pro 4查找到底怎么用&#xff1f;华为FreeBuds Pro 4有星闪精确查找和离线查找&#xff0c;离线查找功能涵盖播放铃声、导航定位、星闪精确查找、上线通知、丢失模式、遗落提醒等。星闪精确查找是离线查找的子功能&#xff0c;当前仅华为FreeBuds Pro 4充电盒支持…...

若依微服务登录密码加密传输解决方案

文章目录 一、需求提出二、应用场景三、解决思路四、注意事项五、完整代码第一步&#xff1a;前端对密码进行加密第二步&#xff1a;后端工具类实现 RSA 加解密功能第三步&#xff1a;登录接口中添加解密逻辑 六、运行结果总结 一、需求提出 在默认情况下&#xff0c;RuoYi 微…...

NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别

随着科技的飞速发展和社会的不断进步&#xff0c;视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中&#xff0c;H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…...

Redisson常用方法

Redisson 参考: 原文链接 定义&#xff1a;Redisson 是一个用于与 Redis 进行交互的 Java 客户端库 优点&#xff1a;很多 1. 入门 1.1 安装 <!--redission--> <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifa…...

html自带的input年月日(date) /时间(datetime-local)/星期(week)/月份(month)/时间(time)控件

年月日期控件 type"date" <input type"date" id"StartDate" valueDateTime.Now.ToString("yyyy-MM-dd") /> //设置值 $("#StartDate").val("2024-12-12"); //获取值 var StartDate$("#StartDate&quo…...

CSS系列(12)-- 响应式设计详解

前端技术探索系列&#xff1a;CSS 响应式设计详解 &#x1f4f1; 致读者&#xff1a;掌握响应式设计的艺术 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS 响应式设计&#xff0c;学习如何创建适应各种设备的网页布局。 响应式基础 &#x1f680; 视口设…...

filecoin boost GraphQL API 查询

查询示例 查询失败交易 curl -X POST \ -H "Content-Type: application/json" \ -d {"query":"query { deals(limit: 10, query: \"failed to get size of imported\") { deals { ID CreatedAt Message } } }"} \ http://localhost:…...

SAS - Subtractive Port

在SAS&#xff08;串行连接SCSI&#xff0c;Serial Attached SCSI&#xff09;协议中&#xff0c;subtractive port 是一种特殊类型的端口&#xff0c;主要用于设备间的路由功能。它的作用是在路径选择过程中充当默认路径&#xff0c;以处理未明确指定路径的请求。以下是它的定…...

TCP客户端模拟链接websocket服务端

因一些特殊原因研究了下TCP模拟链接websocket。原理上可以连接但具体怎么连接怎么操作就不知道了&#xff0c;需要研究下&#xff0c;以下是个人研究的方案。 用线上和本地地址来做例子&#xff1a; 线上wss地址&#xff1a;wss://server.cs.com/cs/vido/1 本地地址ws://127…...

TypeScript 的崛起:全面解析与深度洞察

一、背景与起源 &#xff08;一&#xff09;JavaScript 的局限性 类型系统缺失 难以在编码阶段发现类型相关错误&#xff0c;导致运行时错误频发。例如&#xff0c;将字符串误当作数字进行数学运算&#xff0c;可能在运行时才暴露问题。函数参数类型不明确&#xff0c;容易传入…...

c#笔记2024

Ctrl r e自动添加get和set CompositeCurve3d 复合曲线 List<Entity> entS listline.Cast<Entity>().ToList();//list类型强转 前面拼上\u0003&#xff0c;就可以实现&#xff0c;不管有没有命令都能打断当前命令的效果 取消其他命令&#xff1a;Z.doc.SendStri…...

Hadoop一课一得

Hadoop作为大数据时代的奠基技术之一&#xff0c;自问世以来就深刻改变了海量数据存储与处理的方式。本文将带您深入了解Hadoop&#xff0c;从其起源、核心架构、关键组件&#xff0c;到典型应用场景&#xff0c;并结合代码示例和图示&#xff0c;帮助您更好地掌握Hadoop的实战…...

AI生成图表化:深入探索Mermaid

引言 在使用生成式AI时&#xff0c;只要你提出让AI帮你生成mermaid图&#xff0c;AI的生成就会出现丰富的图形&#xff01; 在现代文档编写中&#xff0c;图表的使用不仅能增强文档的可读性&#xff0c;还能更直观地表达复杂的概念和流程。Mermaid 作为一款开源的图表绘制工具…...

25.DDD数量关系

学习视频来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 关系型数据库的数量关系领域模型的数量关系实现聚合数量关系聚合内聚合间具体说明代码 数量关系是本质吗&#xff1f;领域对象之…...

Linux应用开发————线程池

线程池 定义&#xff1a;简单来说&#xff0c;就是存放多个线程的池子。当创建线程池时&#xff0c;就给池中存放一些线程&#xff0c;如果有任务要执行&#xff0c;就从池中取出一个线程执行任务&#xff0c;依次类推&#xff1b;当所有线程都在执行任务时&#xff0c;其他任务…...

Spring Boot 集成阿里云OSS 完成文件上传下载

前言&#xff1a; 文件上传下载在项目开发中是一个非常常见的业务场景&#xff0c;在云服务上还没有兴起的时候&#xff0c;一般来说都会把文件单独存放到文件服务器上&#xff0c;随着云服务的兴起&#xff0c;各类云服务厂商都提供了 OSS 服务&#xff0c;本篇我们分享 Spri…...

使用ERA5数据绘制风向玫瑰图的简易流程

使用ERA5数据绘制风向玫瑰图的简易流程 今天需要做一个2017年-2023年的平均风向的统计,做一个风向玫瑰图&#xff0c;想到的还是高分辨率的ERA5land的数据&#xff08;0.1分辨率&#xff0c;逐小时分辨率&#xff0c;1950年至今&#xff09;。 风向&#xff0c;我分为了16个&…...

测试脚本并发多进程:pytest-xdist用法

参考&#xff1a;https://www.cnblogs.com/poloyy/p/12694861.html pytest-xdist详解&#xff1a; https://www.cnblogs.com/poloyy/p/14708825.html 总 https://www.cnblogs.com/poloyy/category/1690628.html...

FOC 三相三电阻采样,为何仅选择 PWM 周期末尾(OC4REF 下降沿)采样

详解&#xff1a;FOC 三相三电阻采样&#xff0c;为何仅选择 PWM 周期末尾&#xff08;OC4REF 下降沿&#xff09;采样在 FOC&#xff08;磁场定向控制&#xff09;电机驱动系统中&#xff0c;三相三电阻采样是一种主流的电流检测方案&#xff0c;其核心在于精准选择电流采样时…...

元宇宙开发栈:从3D引擎到社交协议的技术拼图

当元宇宙从概念蓝图加速落地为产业现实&#xff0c;其背后复杂的技术体系正成为软件测试从业者必须攻克的新课题。作为连接虚拟与现实的数字新大陆&#xff0c;元宇宙的稳定运行依赖于底层基础设施、核心引擎、交互系统与上层应用的精密协作。对于测试人员而言&#xff0c;深入…...

DesignPatternsPHP:迭代器模式遍历集合元素的终极指南

DesignPatternsPHP&#xff1a;迭代器模式遍历集合元素的终极指南 【免费下载链接】DesignPatternsPHP Sample code for several design patterns in PHP 8.x 项目地址: https://gitcode.com/gh_mirrors/de/DesignPatternsPHP 在PHP开发中&#xff0c;高效遍历集合数据是…...

别再手动写CSS了!用这个Vue3指令,5分钟搞定Element Plus表格表头吸顶(附完整代码)

Vue3Element Plus表格表头吸顶实战&#xff1a;5分钟实现优雅冻结方案 每次在数据看板里滚动长表格时&#xff0c;最头疼的就是表头消失后完全分不清列名对应什么数据。上周我们团队的后台系统就因为这个问题被客户投诉了三次——财务人员在核对200多行订单数据时&#xff0c;不…...

基于OpenClaw与Alpaca API的自动化交易技能实践指南

1. 项目概述&#xff1a;一个为OpenClaw设计的Alpaca交易技能 如果你和我一样&#xff0c;对自动化交易和AI助手感兴趣&#xff0c;同时又不想被复杂的Python环境、臃肿的SDK和繁琐的配置流程劝退&#xff0c;那么你可能会对 lacymorrow/alpaca-trading-skill 这个项目眼前一…...

旧电脑也能焕发新生?实测在不符合官方要求的设备上安装Windows 11 23H2的几种方法

旧硬件逆袭指南&#xff1a;无TPM设备安装Windows 11 23H2的实战手册 当微软发布Windows 11时&#xff0c;TPM 2.0芯片和第八代以上CPU的强制要求让无数老设备用户感到被时代抛弃。但技术社区从未停止探索——我的ThinkPad T450s&#xff08;2015年机型&#xff09;现在正流畅运…...

vue基于springboot的旅行指南攻略游记系统的设计与实现

目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术实现方案数据模型设计特色功能实现安全防护措施项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 用户管理模块…...

在自动化测试流程中集成多模型API调用以提升测试覆盖率

在自动化测试流程中集成多模型API调用以提升测试覆盖率 1. 自动化测试中多模型调用的必要性 现代软件产品与AI能力的结合日益紧密&#xff0c;但不同模型厂商的API行为可能存在细微差异。单一模型测试无法覆盖所有可能的交互场景&#xff0c;这为产品质量埋下隐患。通过Taoto…...

Blender用户看过来:不用写代码,用QEM算法一键简化你的3D模型(附插件推荐)

Blender艺术家必备&#xff1a;用QEM算法智能简化高模的5种实战方案 当你完成一个细节丰富的角色雕刻后&#xff0c;突然发现模型面数高达200万——实时引擎卡顿、渲染时间暴增、文件传输困难接踵而至。作为非技术背景的3D创作者&#xff0c;其实完全不需要理解复杂数学公式&am…...

Arduino UNO串口控制DFPlayer Mini播放音乐,这5个常见问题你遇到了吗?(附解决方案)

Arduino UNO与DFPlayer Mini串口音乐播放&#xff1a;5大疑难问题深度解析 当你在工作室里兴奋地连接好Arduino UNO和DFPlayer Mini模块&#xff0c;期待着第一段旋律从扬声器传出时&#xff0c;却发现迎接你的可能是沉默、杂音或是各种意想不到的错误提示。这种挫败感每个创客…...