MyBatis--SqlSession概述

Mybatis之SqlSession详解 Mybatis 阅读详情
SqlSession概述

在 MyBatis 中,SqlSession 是其核心接口。在 MyBatis 中有两个实现类,DefaultSqlSession 和 SqlSessionManager。

DefaultSqlSession 是单线程使用的,而 SqlSessionManager 在多线程环境下使用。SqlSession 的作用类似于一个 JDBC 中的 Connection 对象,代表着一个连接资源的启用。具体而言,它的作用有 3 个:

  • 获取 Mapper 接口。
  • 发送 SQL 给数据库。
  • 控制数据库事务。
SqlSession sqlSession = SqlSessionFactory.openSession();

注意,SqlSession 只是一个门面接口,它有很多方法,可以直接发送 SQL。它就好像一家软件公司的商务人员,是一个门面,而实际干活的是软件工程师。在 MyBatis 中,真正干活的是 Executor,我们会在底层看到它。

SqlSession 控制数据库事务的方法,如下所示。

//定义 SqlSession
SqlSession sqlSession = null;
try {
    // 打开 SqlSession 会话
    sqlSession = SqlSessionFactory.openSession();
    // some code...
    sqlSession.commit();    // 提交事务
} catch (IOException e) {
    sqlSession.rollback();  // 回滚事务
}finally{
    // 在 finally 语句中确保资源被顺利关闭
    if(sqlSession != null){
        sqlSession.close();
    }
}

这里使用 commit 方法提交事务,或者使用 rollback 方法回滚事务。因为它代表着一个数据库的连接资源,使用后要及时关闭它,如果不关闭,那么数据库的连接资源就会很快被耗费光,整个系统就会陷入瘫痪状态,所以用 finally 语句保证其顺利关闭。

mybatis的SqlSession 这个代理对象在其invoke方法中,当调用Mapper接口的方法时,会利用内部持有的SqlSession来执行相应的SQL语句,即通过SqlSession的API来完成数据库操作。当调用BaseMapper的某个方法时,实际上是调用代理对象的方法,代理对象内部通过SqlSession找到对应的MappedStatement(已解析好的SQL语句和参数映射信息),然后调用Executor执行SQL,最后将数据库结果转换为Java对象并返回。标签,定义查找用户信息的SQL查询语句,并指定它与方法的映射关系。 阅读详情

相关推荐

MyBatis原理分析之获取SqlSession

前置博客:MyBatis原理分析之获取SqlSessionFactory,本篇是续篇。 获取sqlsession主要是通过SqlSessionFactory的几个重载方法,从configuration中的environment获取datasource与transactionFactory来得到Transaction。然后得到Transaction、Executor与DefaultSqlSession。 mybatis全局配置文件中environments 结点配置如下 <environments de

小小默:进无止境 5803

Mybatis之 SqlSession简介

SqlSession 的创建需要借助于 SqlSessionFactory。SqlSessionFactory 是 Mybatis 的关键对象。每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。如下图所示: SqlSessionFactory 可以理解为是创建 SqlSession 的工厂,SqlSessionFactory 是线程安全的,一旦被创建,应

dingd1234的博客 6645

Mybatis的API概述和基本原理

Mybatis的API概述和基本原理

轻描时光 327

MyBatis - SqlSession

前面的章节主要讲mybatis如何解析配置文件,这些都是一次性的过程。从本章开始讲解动态的过程,它们跟应用程序对mybatis的调用密切相关。本章先从sqlsession开始。 一、SqlSession 1、创建 正如其名,Sqlsession对应着一次数据库会话。由于数据库回话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(...

2731

保姆级教程:在Ubuntu 22.04上搞定PX4 V1.14 + ROS2 Humble的HITL仿真(避坑实录)

本文提供在Ubuntu 22.04上配置PX4 V1.14与ROS2 Humble的HITL仿真环境的详细教程,涵盖环境准备、固件编译、QGroundControl配置、ROS2通信设置及联调测试。特别针对版本兼容性、Gazebo插件构建和MicroDDS配置等常见问题提供避坑指南,帮助开发者高效搭建无人机仿真系统。

weixin_30836759的博客 1001

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

MyBatis 入门概述 sqlsession 工作原理

1、MyBatis简介 MyBatis是一个半自动化的持久化层框架。比JDBC好用的多。 用MyBatis可以做到sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据。 扩展:JDBC缺点 SQL夹在Java代码块里,耦合度高导致硬编码内伤 维护不易且实际开发需求中sql是有变化,频繁修改的情况多见 2、如何使用MyBatis 百度mybatis,进入官网,https://mybatis.org/mybatis-3/zh/getting-started.html 点击入门,按.

chengqingshihuishui的博客 324

RLHF的数学表示

RLHF(Reinforcement Learning with Human Feedback)是一种结合了强化学习和人类反馈的机器学习方法。它通常用于训练智能体(agent)在复杂环境中做出决策,同时利用人类的反馈来指导和改进学习过程。RLHF 没有一个统一的数学表示式,因为它依赖于具体的应用场景和实现细节。然而,我们可以从强化学习和人类反馈的角度来描述RLHF的一些关键数学概念。

xw555666的博客 687

SqlSessionFactory和SqlSession

1.SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像。 2.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例。

Pursuit_li的博客 158

基于 YOLOv26 的车辆违规停车检测系统:实时监控

本文提出了一种基于YOLOv26的车辆违规停车实时检测系统。系统采用多模块架构,包括视频预处理、YOLOv26目标检测、DeepSORT目标跟踪、停车区域定义、行为分析和违规判定等功能模块。关键技术包括使用YOLOv26s模型进行车辆检测,结合DeepSORT算法实现车辆跟踪,支持多种停车区域定义方式(多边形、矩形、限时区域等)。系统通过边缘计算平台部署,实现了对道路边、禁止停车区等场景的实时监控,能够准确识别长时间停车、禁止区域停车等违规行为,并触发告警机制。实验结果表明,该系统在车辆检测准确率和违规判定

一键难忘的博客 773

【精品5万字图文详解】特征平台建设方案与最佳实践

关键词:特征工程、特征平台、特征存储、特征服务、机器学习、数据工程摘要:本文全面介绍了特征平台的建设方案与最佳实践,从特征工程的基本概念出发,深入剖析了特征平台的核心组件、架构设计和实现方法。文章通过生动的类比和实例,使读者能够轻松理解特征工程的重要性及特征平台如何解决企业在机器学习过程中面临的数据管理挑战。同时,详细探讨了主流开源特征平台的对比分析、系统设计要点、实际落地案例以及未来发展趋势,为企业构建高效特征平台提供了全面的指导和参考。想象一下,小明是一位热爱烹饪的小学生。有一天,他想做一道美味的菜肴送

AI天才研究院 952

mybatis之SqlSession

.SqlSession DefaultSqlSession核心字段的含义如下: // 配置对象 private final Configuration configuration; // 底层依赖的Executor对象 private final Executor executor; // 是否自动提交事务 private final boolean autoCommit; // 当前缓存是否有脏数据 private boolean dirty; // 为防止用户忘记关闭

a1047003619的博客 3275

抖音小程序:解决获取手机号报错 getPhoneNumber:fail auth deny,登录注册时需要获取用户手机号,getPhoneNumber一直提示错误(Uniapp抖音小程序报错也能解决)

抖音字节小程序获取手机号报错getPhoneNumber:fail auth deny,抖音 小程序 获取手机号 报错 getPhoneNumber:fail auth ,抖音小程序获取手机号始终返回拒绝,抖音小程序获取手机号,已经过了试运营期但依旧报错如何解决,调用 tt.getPhoneNumber 接口报错,登录注册时需要获取用户手机号,getPhoneNumber一直提示getPhoneNumber:fail auth deny,此能力仅支持小程序通过试运营期后可用,默认获取权限,无需申请;unia

✅ 精选推荐文章 4305

MyBatis源码分析,三、SqlSession和Mapper代理对象

(一)创建Sqlsession 先前的文章中, 已经说明了,创建了一个SqlSession的工厂类SqlSessionFactory ,读取mybatis-config文件,将配置封装成了一个configuration对象 SqlSessionFactory里面有内置属性configuration,创建DefaultSqlSession , 把configuration加入到DefaultSqlSession private SqlSession openSessionFromDataSource(Ex

weixin_42875415的博客 841

【二.图像处理核心技术】【5.形态学操作:腐蚀/膨胀/开闭运算】

想象一下,你拍了一张布满雪花点的老照片,或者扫描了字迹断裂的文档,这时候形态学操作就是你的像素整形师!它们能让模糊的边界变清晰,把断裂的笔画连起来,甚至从X光片里揪出癌细胞。今天我们要聊的,是计算机视觉界的"广场舞双雄"——腐蚀和膨胀。这俩操作就像给像素点们请了个健身教练,要么集体减肥(腐蚀),要么组团增肌(膨胀)。下次当你用美颜相机时,不妨会心一笑——这看似魔法的背后,正是形态学在默默耕耘。腐蚀的规则很简单:如果一个像素点周围的邻居不全白,它就"狗带"(变黑)。:先用砂纸打磨(腐蚀),再喷漆填补(膨胀)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 425

利用人工神经网络在Abaqus中实现本构模型的网格粗化计算框架:详细指南与实践

在这篇文章中,我们详细介绍了如何在Abaqus中实现基于人工神经网络(ANN)的本构模型以进行网格粗化的计算框架。我们通过两个主要模块——数据生成器模块和ANN训练模块,实现了这一计算框架,并将训练好的ANN集成到Abaqus的用户材料子程序(UMAT)中,创建了一个基于ANN的本构模型。我希望这篇文章能帮助到那些希望在Abaqus中实现基于ANN的本构模型的读者,同时,我也非常欢迎大家提出宝贵的意见和建议,让我们共同进步。

qq_38334677的博客 1715

SqlSession

SqlSession对象的主要功能是完成一次数据库的访问和结果的映射,它类似于数据库的session概念,由于不是线程安全的,所以SqlSession对象的作用域需限制方法内。SqlSession的默认实现类是DefaultSqlSession,它有两个必须配置的属性:Configur...

chungu8399的博客 198

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Mybatis源码分析一Configuration初始化以及SqlSession的创建过程

我只是记录一些自己的学习后的心得,只能说我是明白了怎么执行,但是能不能说清楚就不一定了。

qq_44600359的博客 436

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Mybatis概述

1、Mybatis概述 1.1 JDBC编程 1.2.说说你对Mybatis的了解 1.Mybatis 基于java的持久层框架,它的内部封装了JDBC,让开发人员只需要关注SQL语句本身,不需要花费精力在驱动的加载、连接的创建、Statement的创建等复杂的过程。 2.Mybatis 通过 XML 或注解的方式将要执行的各种的 statement 配置起来,并通过 java 对象和 statement 中的 sql 的动态参数进行映射生成最终执行的SQL 语句,最后 由mybatis框架执行SQL,并

YYYQD的博客 2365

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

1.mybatis结构总览

1、mybatis简单 demo @Before public void beforeMybatis() throws IOException { String resource = "com/scarecrow/mybatis/config/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); Properties properties = new Properties()

wangbo199308的博客 301

Mybatis01 Mybatis简介、Mybatis的快速入门、MyBatis的映射文件概述、MyBatis的增删改查操作、MyBatis核心配置文件概述、MyBatis相应API

Mybatis011.Mybatis简介1.1原始jdbc操作(查询数据)1.2原始jdbc操作(插入数据)1.3 原始jdbc操作的分析1.4 什么是Mybatis2.Mybatis的快速入门2.1 MyBatis开发步骤2.2 环境搭建2.3 编写测试代码2.4 知识小结3. MyBatis的映射文件概述4. MyBatis的增删改查操作4.1 MyBatis的插入数据操作4.2 MyBatis的修改数据操作4.3 MyBatis的删除数据操作4.4 知识小结5. MyBatis核心配置文件概述5.1

狗提莫的博客 237

mybatis源码 核心流程

初读mybatis源码

苏启 385

Mybatis源码分析

一、 环境搭建 1. mysql的环境 1.1 mysql安装地址 Linux环境 : 可使用yum或者docker下载mysql Windows环境: 可上mysql的官网下载,这里推荐清华tuna镜像网,下载速度更快。 1.2 建表 这里我们需要建立一张测试表用于mybatis的debug 建表语句如下: CREATE TABLE `user` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT

JuneHua的博客 738

Mybatis 详解

MyBatis 配置文件、映射文件解释。浅谈 MyBatis 中的 API

Demo_Null 2454

从源码角度分析 Mybatis 工作原理

一、MyBatis 完整示例这里,我将以一个入门级的示例来演示 MyBatis 是如何工作的。注:本文后面章节中的原理、源码部分也将基于这个示例来进行讲解。完整示例源码地址1.1. 数据库准备在本示例中,需要针对一张用户表进行 CRUD 操作。其数据模型如下: 1.2. 添加 MyBatis如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: 1.3. MyBatis 配置XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSo

澎湖Java架构师的博客 273

JavaEE-MyBatis概述&第一个程序

我们通常在文献中看到的framework这种单词我们称之为框架Java常用的框架如下Spring, SpringMVC, MyBatis(SSM), SpringBoot, SpringCloud(微服务相关)框架本质上就是对通用代码的封装, 作为我们Java程序员, 我们不需要特别在意底层的实现原理, 而是面对具体的业务进行业务代码的编写即可(所有的技术最终都要服务于业务)框架通常都以jar包的形式存在(包含各种class文件以及配置文件。

2301_81486828的博客 1198
上一篇: MyBatis--实现映射器的2种方式:XML文件形式和注解形式
下一篇: MyBatis--执行SQL的两种方式:SqlSession和Mapper接口
吴声子夜歌
博客等级 码龄9年 2687粉丝 2267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值