MyBatis中连接的获取过程
开发工具与关键技术:MyEclipse、MyBatis
作者:LJR
撰写时间:2020年 12 月 04 日
在学习Mybatis的时候,可能我们会遇到很多的难点,在做数据库连接的连接池的时候,做一点点的总结。
Mybatis中连接的获取过程分析
当我们需要创建 SqlSession 对象并需要执行 SQL 语句时,这时候 MyBatis 才会去调用 dataSource 对象 来创建java.sql.Connection对象。
也就是说,java.sql.Connection对象的创建一直延迟到执行SQL语句 的时候。
@Test
public void testSql() throws Exception { InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in); SqlSession sqlSession = factory.openSession(); List<User> list = sqlSession.selectList("findUserById",41); System.out.println(list.size());
}
只有当第 4句sqlSession.selectList(“findUserById”),才会触发MyBatis 在底层执行下面这个方 法来创建 java.sql.Connection 对象。
如何证明它的加载过程呢?
我们可以通过断点调试,在 PooledDataSource 中找到如下 popConnection()方法,
如下所示 :
下面是连接获取的源代码:
最后我们可以发现,真正连接打开的时间点,只是在我们执行SQL语句时,才会进行。其实这样做我们也可以 进一步发现,数据库连接是我们最为宝贵的资源,只有在要用到的时候,才去获取并打开连接,当我们用完了就再 立即将数据库连接归还到连接池中。
这样子我们的Mybatis中连接的获取过程就完成了。
MyBatis中连接的获取过程相关推荐
- Mybatis中连接池介绍
连接池:我们在实际开发中都会使用连接池.以为它可以减少我们获取连接所消耗的时间mybatis中的连接池mybatis连接池提供了三种方式的配置,配置位置主配置文件SqlMapConfig.xml中的d ...
- MyBatis中使用流式查询避免数据量过大导致OOM
欢迎关注方志朋的博客,回复"666"获面试宝典 今天mybatis查询数据库中大量的数据,程序抛出: java.lang.OutOfMemoryError: Java heap s ...
- MyBatis 中的九种设计模式
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://www.crazyant.net ...
- mybatis中LIKE模糊查询的几种写法以及注意点(亲测第三种CONCAT()函数的)
mybatis中对于使用like来进行模糊查询的几种方式: (1)使用${...} 注意:由于$是参数直接注入的,导致这种写法,大括号里面不能注明jdbcType,不然会报错 org.mybatis. ...
- 9、mybatis中动态sql的使用
对于初学者,如何进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...
- 6、mybatis中的sql映射文件详解(1)
对于初学者,如果进行mybatis的学习呢?我总结了几点,会慢慢的更新出来.首先大家需要了解mybatis是什么.用mybatis来做什么.为什么要用mybatis.有什么优缺点:当知道了为什么的时候 ...
- Mybatis中强大的功能元素:resultMap
转载自 Mybatis中强大的功能元素:resultMap 前言 在Mybatis中,有一个强大的功能元素resultMap.当我们希望将JDBC ResultSets中的数据,转化为合理的Java ...
- Spring整合mybatis中的sqlSession是如何做到线程隔离的?
转载自 Spring整合mybatis中的sqlSession是如何做到线程隔离的? 项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按 ...
- mybatis中LIKE模糊查询的几种写法以及注意点
From: https://blog.csdn.net/zhenwei1994/article/details/81876278 mybatis中对于使用like来进行模糊查询的几种方式: (1)使用 ...
最新文章
- python把中文转英文_Python 3.0_文本清洗之中文特殊符号转英文特殊符号及全角字符转半角字符...
- Dvbbs8严重漏洞
- cmake学习(五) 系统默认变量和内置变量
- 3.3 计算神经网络的输出
- ASP.NET2.0的快速入门站点
- linux下c++版本线程池的实现
- PHP用户名和密码登陆验证代码
- st计算机编程语言,初学ST语言,有了这篇ST编程语言的相关知识就容易多了~
- win7系统如何开启打印服务器配置,win7系统怎么添加打印服务器端口
- 如果使用git克隆远程创库,pull提示Can‘t update master has no tracked branch
- 论win10专业版,企业版和教育版之间自由切换的方法和密钥
- FPGA 视频处理 FIFO 的典型应用
- android读取剪切板的方法,Android获取粘贴板内容
- java+js+html 实现webSocket广播及私聊
- 淡入淡出文字垂直滚动
- 设计word模板添加书签
- 频率计的交流耦合和直流耦合的区别_示波器DC/AC耦合设置及影响
- 在做竞品分析时遇到的一些坑
- 机器学习——Google 快速入门课程(综合版)
- 10 个实用技巧,让 Finder(访达)带你飞