Mybatis源码研究5:数据源的实现
2019独角兽企业重金招聘Python工程师标准>>>
一、数据源概述
数据源相关核心类位于datasource包中,本包主要引用了Mybatis的reflection的ExceptionUtil类和loggin包的Log接口和LogFactory类。
Mybatis的session包的Configuration类,builder.xml包的XMLConfigBuilder类引用了本包中的类和接口。
二、核心接口
DataSourceFactory接口定义了2个方法:
//设置属性
void setProperties(Properties props);
//获取数据源
DataSource getDataSource();
javax.sql.DataSource接口定义了2个方法:
//获取连接
Connection getConnection() throws SQLException;
//根据用户名和密码等参数获取连接
Connection getConnection(String username, String password)throws SQLException;
三、核心接口的3种实现
1. JNDI实现(位于datasource.jndi子包中)
JndiDataSourceFactory实现了DataSourceFactory接口。
提供DataSource实现类的关键代码:
InitialContext initCtx = new InitialContext();
Context ctx = (Context) initCtx.lookup(properties.getProperty(INITIAL_CONTEXT));
DataSource dataSource = (DataSource) ctx.lookup(properties.getProperty(DATA_SOURCE));
2. 连接池实现(位于datasource.pooled子包中)
PooledDataSourceFactory继承UnpooledDataSourceFactory,从而实现了DataSourceFactory接口。
关键在于构造方法:
public PooledDataSourceFactory() {
this.dataSource = new PooledDataSource();
}
构造方法中,dataSource使用的是 PooledDataSource。
PooledDataSource实现了DataSource接口,维护了若干个 数据库连接。
3. 非连接池实现(位于datasource.unpooled子包中)
UnpooledDataSourceFactory实现了DataSourceFactory接口。
UnpooledDataSource实现了DataSource接口,提供了获取数据库连接Connection的2个方法。
内部维护了 获取一个数据库连接的若干属性,包括但不限于:
String driver;//驱动名
String url;//数据库访问路径
String username;//用户名
String password;//密码
boolean autoCommit;//是否自动提交
注:PooledDataSource和UnpooledDataSource 都有5个重载的构造方法。
转载于:https://my.oschina.net/jiutianniao/blog/400388
Mybatis源码研究5:数据源的实现相关推荐
- mybatis源码修改-实现数据源灵活切换
一.实现灵活切换数据源 mybatis目前只支持单数据源配置,如果想要切换数据源的话不能够灵活的操作,因此想要修改mybatis源码已支持数据源灵活切换,最终使用方式如下,指定对应的数据源,mybat ...
- Mybatis源码研究序
公司开发项目中,用到了Mybatis这个框架.所以,开始了对Mybatis的认真学习-应用-研究. DbUtils,Mybatis,Struts2,Hibernate3,Spring3 的源码都瞧了瞧 ...
- Mybatis源码研究6:元数据(metadata)
2019独角兽企业重金招聘Python工程师标准>>> 原理分析之六:元数据(metadata) 一.依赖关系 本包对mybatis的其它包没有任何依赖,mybatis的其它包 ...
- Mybatis源码研究2:框架整体设计
本文转载自:http://chenjc-it.iteye.com/blog/1460990 1.引言 本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络.后面文章我们再详细讲解各个组件. ...
- MyBatis 源码分析 - 内置数据源
1.简介 本篇文章将向大家介绍 MyBatis 内置数据源的实现逻辑.搞懂这些数据源的实现,可使大家对数据源有更深入的认识.同时在配置这些数据源时,也会更清楚每种属性的意义和用途.因此,如果大家想知其 ...
- mybatis源码分析执行流程
前言 在上一篇,我们了解了mybatis的整体执行流程,以及内部的各个组件在执行过程中的功能,下面我们来通过源码的方式对其中比较重要的几个组件在执行过程的使用进行简单的分析与说明 环境准备 基于第一篇 ...
- Mybatis源码解析《二》
导语 在前一篇文章Mybatis源码解析<一>中,已经简单了捋了一下mybatis核心文件和mapper配置文件的一个基本的解析流程,这是理解mybatis的基本,和spring中的配置文 ...
- mybatis源码分析之事务管理器
2019独角兽企业重金招聘Python工程师标准>>> 上一篇:mybatis源码分析之Configuration 主要分析了构建SqlSessionFactory的过程中配置文件的 ...
- MyBatis源码骨架分析
源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...
最新文章
- Java并发基本概念
- OVS ovs-vsctl(二十五)
- 中国研究的超级系统计算机,[公告]超级系统恢复--学习电脑 Book 3 V1.1
- PyQt5 图形界面 - 配置界面跟随窗口大小调整灵活伸缩,设置页面控件居中显示实例演示
- linux 飞行模拟,为推进2020款微软飞行模拟器开发:微软启动Flight Simulator X Beta测试...
- mysql1401错误_mysql错误代号-I(1401~1450)
- 使用OpenCV进行相机校准
- 全程图解交换机和路由器的应用
- 如何在ABAP Netweaver和CloudFoundry里记录并查看日志
- C++中关于指针入门的最好的文章
- 一带一路”建设的助力者——刘岳霖
- 互联网公司的完整开发流程是怎样的?
- react路由不显示下划线
- 如何给PDF文件添加水印?PDF免费添加水印教程来了
- Java中关于UTM转经纬度
- Uni-app 小程序使用腾讯云IM实时通讯
- PR AE PS安装资源包
- 基于Ti Omap3x 分析v4l2架构
- hdu4114.Disney's FastPass
- 用树莓派都可以DIY“波士顿机器狗”!
热门文章
- anglar ajax执行2次的原因,AngularJS与Ajax表单提交需要单击两次
- new float查询长度 c++_C/C++经典面试题
- java 图片组合 分解_切分和组合图片(二)
- 学python最重要的是_Python学习,要选哪个版本?
- 深度优化LNMP之Nginx [1]
- Kafka 命令行操作
- 这一领域,互联网巨头纷纷入局!
- 从0到1打造企业数字化运营闭环白皮书
- MySQL下载和安装以及问题解决
- 客座编辑:刘克,男,博士,国家自然科学基金委员会信息科学部二处(计算机学科)处长。...