Mybatis中执行Sql的执行过程
MyBatis中执行SQL的过程可以分为以下几个步骤:
-
解析配置文件:在运行时,MyBatis会加载并解析配置文件(通常为
mybatis-config.xml),获取数据库连接信息、映射文件等。 -
创建SqlSessionFactory:MyBatis使用SqlSessionFactory来创建SqlSession对象。SqlSessionFactory是一个线程安全的对象,应该在应用程序启动时创建一次,并在整个应用程序生命周期内重复使用。
-
创建SqlSession:应用程序通过SqlSessionFactory创建SqlSession对象。SqlSession是一个轻量级的非线程安全对象,用于执行SQL语句和管理事务。
-
获取Mapper接口:应用程序通过SqlSession获取Mapper接口的实现类。Mapper接口定义了SQL语句和Java方法之间的映射关系,MyBatis会根据这些映射关系生成SQL语句并执行。
-
执行SQL语句:应用程序调用Mapper接口的方法时,MyBatis会根据映射文件中的配置信息,生成对应的SQL语句,并将参数传递给数据库执行。MyBatis支持多种SQL语句,如查询、插入、更新、删除等。
-
处理结果集:当数据库执行完SQL语句并返回结果时,MyBatis会将查询结果映射到Java对象中。根据映射文件中的配置规则,MyBatis会将数据库查询结果的列映射到Java对象的属性上,从而方便应用程序对数据的处理和使用。
-
提交事务:如果应用程序开启了事务管理,MyBatis会在执行完SQL语句后提交事务。如果发生异常或事务回滚,MyBatis会撤销之前的操作,并关闭数据库连接。
-
关闭SqlSession:当应用程序完成对数据库的操作后,需要手动关闭SqlSession对象。这样可以释放资源,避免内存泄漏等问题。
@Testpublic void testInsert() throws IOException {
// 获取核心配置文件的输入流InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
// 获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
// 获取SqlSessionFactoryBuilder对象SqlSessionFactory build = sqlSessionFactoryBuilder.build(is);
// 获取sql的会话对象sqlSession,是Mybatis提供操作数据库的对象SqlSession sqlSession = build.openSession(true);
// 获取UserMapper的代理实现类对象
// 底层会给我创建UserMapper的实现类,然后返回
// TODO 使用了代理模式,创建了UserMapper的实现类UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// TODO 执行原理,根据Id查找,然后找到其映射的对象,然后进行实现 sqlSession.insert()
// int result = sqlSession.insert("com.mybatis.mapper.UserMapper.insertUserOne");// User user = new User(null, "abc", "123456", 18);int result = mapper.insertUserOne();System.out.println(mapper instanceof UserMapper);System.out.println("result = " + result);
// 提交事务
// 如果不提交事务,那么显示看不到效果的,事务还没有提交
// sqlSession.commit();
// 关闭sqlSessionsqlSession.close();}
相关文章:
Mybatis中执行Sql的执行过程
MyBatis中执行SQL的过程可以分为以下几个步骤: 解析配置文件:在运行时,MyBatis会加载并解析配置文件(通常为mybatis-config.xml),获取数据库连接信息、映射文件等。 创建SqlSessionFactory:MyB…...
IEEE Standard for SystemVerilog—Chapter 25.7 Tasks and functions in interfaces
子例程(任务和函数)可以在接口中定义,也可以在连接的一个或多个模块中定义。这允许更抽象的建模级别。例如,“读”和“写”可以定义为任务,而不需要引用任何连线,主模块只能调用这些任务。在modport中&…...
一台服务器最大能支持多少条 TCP 连接
文章目录 1. 一台服务器最大能打开的文件数1.1 限制参数1.2 调整服务器能打开的最大文件数示例 2. 一台服务器最大能支持多少连接3. 一台客户端机器最多能发起多少条连接4. 其他5. 相关实际问题5.1 "too many open files" 报错是怎么回事,该如何解决5.2 一…...
Qt重定向QDebug,Qt/C++开源作品39-日志输出增强版V2022
Qt重定向QDebug,自定义一个简易的日志管理类 Chapter1 Qt重定向QDebug,自定义一个简易的日志管理类0.前言1.最简单的操作运行结果2.实现一个简易的日志管理类 Chapter2 Qt::Qt Log日志模块Qt Log日志模块官方解释官方Demo思路 Chapter3 QT日志模块的个性…...
linux入门---多线程的控制
目录标题 线程库pthread_create如何一次性创建多个线程线程的终止线程的等待线程取消分离线程如何看待其他语言支持的多线程线程id的本质线程的局部存储线程的封装 线程库 要想控制线程就得使用原生线程库也可以将其称为pthread库,这个库是遵守posix标准的…...
基于android的 rk3399 同时支持多个USB摄像头
基于android的 rk3399 同时支持多个USB摄像头 一、前文二、CameraHal_Module.h三、CameraHal_Module.cpp四、编译&烧录Image五、App验证 一、前文 Android系统默认支持2个摄像头,一个前置摄像头,一个后置摄像头 需要支持数量更多的摄像头࿰…...
【Qt之控件QTreeView】设置单元格高度、设置图标尺寸
设置列宽 设置高度 自定义代理 继承QItemDelegate,实现sizeHint ()方法,设置自定义委托。 class itemDelegate : public QItemDelegate {Q_OBJECTpublic:explicit itemDelegate(QObject *parent 0) : QItemDelegate(parent){}~itemDelegate(){}virtua…...
力扣42.接雨水(java,暴力法、前缀和解法)
Problem: 42. 接雨水 文章目录 思路解题方法复杂度Code 思路 要能接住雨水,感性的认知就是要形成一个“下凹区域”,则此时我们就要比较当前柱子和其左右柱子高度的关系,易得一个关键的式子:当前小区域的积水 min(当前…...
hdlbits系列verilog解答(移位寄存器)-23
文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个具有两个输入和一个输出的模块 my_dff (实现 D 触发器)。实例化其中的三个,然后将它们链接在一起以形成长度为 3 的移位寄存器。端口 clk 需要连接到所有实例。…...
Linux命令记载
服务器基本操作 SSH登录服务器 ssh -p 端口号 用户名服务器IP 输入密码SFTP上传文件 #输入密码 #使用get命令下载远程服务器的文件,比如/usr/test.txt sftp>get /usr/test.txt#使用put命令上传本地文件到服务器,比如/usr/test1.txt sftp> put /…...
Flume 快速入门【概述、安装、拦截器】
文章目录 什么是 Flume?Flume 组成Flume 安装Flume 配置任务文件应用示例启动 Flume 采集任务 Flume 拦截器编写 Flume 拦截器拦截器应用 什么是 Flume? Flume 是一个开源的数据采集工具,最初由 Apache 软件基金会开发和维护。它的主要目的是…...
【pandas技巧】group by+agg+transform函数
目录 1. group by单个字段单个聚合 2. group by单个字段多个聚合 3. group by多个字段单个聚合 4. group by多个字段多个聚合 5. transform函数 studentsgradesexscoremoney0小狗小学部female958441小猫小学部male938362小鸭初中部male838543小兔小学部female909314小花小…...
一文解读WordPress网站的各类缓存-老白博客
缓存是一种重要的WordPress优化手段,用于提高网站的性能和加载速度。减少计算量,有效提升响应速度,让有限的资源服务更多的用户。本文老白博客便从自己的使用简单给大家介绍下WordPress的缓存,包括 站点缓存(Page Cach…...
从零开始:开发直播商城APP的技术指南
时下,直播商城APP已经成了线上购物、电子商务的核心组成,本文将为您提供一个全面的技术指南,帮助您从零开始开发一个直播商城APP。我们将涵盖所有关键方面,包括技术堆栈、功能模块、用户体验和安全性。 第一部分:技术…...
GZ035 5G组网与运维赛题第6套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第6套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) …...
分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)
分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制) 目录 分类预测 | Matlab实现KOA-CNN-GRU-selfAttention多特征分类预测(自注意力机制)分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matla…...
【Qt】QString怎么转成int
2023年10月29日,周日晚上 第一种方法 这种方法会尝试将 QString 对象转换为 int 类型。如果转换成功,将返回转换后的 int 值;如果转换失败(例如,字符串中包含非数字字符),则返回 0。 QString…...
ubuntu 22.04 安装python-pcl
ubuntu 22.04 安装python-pcl 安装python-pcl修复bug 由于python-pcl库基本已经停止维护,所以Ubuntu22.04 在使用pip install python-pcl安装的时候会出现版本不适配的原因 安装python-pcl 使用Ubuntu22系统自带python3安装python-pcl,随后将下载的包拷…...
【题解】[GenshinOI Round 3 ]P9817 lmxcslD
题目传送门 分析 看到这道题我一开始是有点懵的,但是看了看数据范围,发现有几个点有 n 为质数 的特殊性质,结论先行,大胆猜测是不是可以贪心,所以先打了一个最傻的代码上去试试. void solve(){cin >> n >&…...
在pycharm中,远程操作服务器上的jupyter notebook
一、使用场景 现在我们有两台电脑,一台是拥有高算力的服务器,另一台是普通的轻薄笔记本电脑。如何在服务器上运行jupyter notebook,同时映射到笔记本电脑上的pycharm客户端中进行操作呢? 二、软件 pycharm专业版,jupy…...
防爆控制柜制造:从危险区域适配到电气安全的完整解析
一、什么是防爆控制柜制造?防爆控制柜制造,是指根据化工厂、石油化工、制药车间、喷涂车间、粉尘车间、油漆房、燃气站、危化品仓库、煤化工、粮食加工、木粉加工、新能源材料、电子化学品等存在爆炸性气体、蒸气或粉尘环境的场所需求,对防爆…...
Marshall新款Milton ANC头戴式耳机来袭:音质续航皆优,售价229美元!
Marshall推出新款Milton ANC头戴式耳机Marshall推出了最新款头戴式耳机——Milton ANC。这款耳机在音质、耐用性和电池续航方面都毫不妥协,售价为229美元。耳机特点与升级Marshall宣布推出全新的头戴式耳机Milton ANC。它承诺在不牺牲电池续航的前提下,带…...
老旧小区门禁改造:业主权益与合规指引
一、费用来源与使用规范小区门禁改造并非全部由业主自费承担,可按合规渠道统筹资金,优先使用公共补贴与专项维修资金。资金使用优先级:政府老旧小区改造财政补贴>住宅专项维修资金>业主自筹财政补贴:老旧小…...
25款经典老芯片回顾:从运放、逻辑门到MCU,重温电子工程基石
1. 引言:一场跨越时代的芯片“认亲大会”最近在整理工作室的旧物料箱,翻出了一堆尘封已久的芯片,从布满灰尘的DIP封装到早已停产的早期逻辑门,每一片都像一张泛黄的老照片,记录着电子工业发展的一个脚印。我随手拍了几…...
数据安全合规实战:等保2.0和GDPR要求下的文件加密配置清单
从“过等保”到“过审计”,一份可直接照抄的配置模板又到了每年合规审计季。去年我们公司同时面临等保2.0三级复测和欧盟客户要求的GDPR合规审查,其中文件加密是两者共同的重点项。我们以天锐绿盾为基础,整理了一套加密合规配置清单ÿ…...
不止于箱线图:用TCGA泛癌配对样本数据,画出更高级的基因表达点线图(附完整R代码)
超越箱线图:TCGA泛癌配对样本数据的高级可视化实战指南 在生物信息学研究中,TCGA泛癌数据一直是探索癌症分子特征的宝贵资源。然而,大多数分析停留在简单的组间比较,使用箱线图展示基因表达差异,忽略了数据中更精细的模…...
文字修仙项目市场价值与商业化分析
文字修仙 AI Agent:市场价值与个人开发者商业化实战指南 一、文字修仙游戏的市场基本面——小众赛道的大机会 1.1 全球文字/互动叙事游戏市场规模与增长 1.2 中文修仙品类的独特生态:QQ群 → 微信 → 抖音 1.3 用户画像:谁在玩文字修仙&…...
为什么你的ElevenLabs沪语输出像“洋泾浜”?资深ASR工程师用12组基频曲线图揭示声调失准根源
更多请点击: https://codechina.net 第一章:沪语语音合成的声调失准现象全景扫描 沪语(上海话)作为典型的吴语代表,具有复杂的连读变调系统与高辨义性声调特征,这使得其语音合成在声调建模环节极易出现系统…...
为什么你的双色调总像PPT?揭秘Midjourney v6中未公开的--tint权重衰减算法与Gamma校准阈值
更多请点击: https://kaifayun.com 第一章:双色调视觉失真的本质归因 双色调视觉失真并非单纯由显示设备或图像压缩引发的表层现象,其根本源于人眼视锥细胞响应函数与数字色彩空间映射之间的结构性不匹配。当图像被强制量化为仅含两种色调&a…...
PHP - PHP 简易 Web 服务器、基础接口开发
一、PHP 简易 Web 服务器 1、基本介绍 PHP 自带一个简易的 Web 服务器,适合快速测试,启动方式如下 php -S 【监听地址】:【监听端口】# 例如php -S 127.0.0.1:80002、注意事项 通过以下方式启动,就需要通过 localhost 访问,而不能…...
