【源码】Mybatis
文章平均质量分 94
IT码客
明日复明日,明日何其多,以此博文来约束自己,多学习,多总结。如不巧能帮助他人,实属本人之荣幸。
展开
-
Mybatis源码学习之整体架构(一)
简述 关于ORM的定义,我们引用了一下百度百科给出的定义,总体来说ORM就是提供给开发人员API,方便操作关系型数据库的,封装了对数据库操作的过程,同时提供对象与数据之间的映射功能,解放了开发人员对访问数据库交互的维护,大大提高工作效率。我们以传统JDBC编程中的查询操作为例进行说明,其主要步骤如下:(1)注册数据库驱动类,明确指定数据库URL地址、数据库用户名、密码等连接信息。...原创 2018-06-03 18:57:17 · 300 阅读 · 0 评论 -
Mybatis源码学习之parsing包(解析器)(二)
简述大家都知道mybatis中,无论是配置文件mybatis-config.xml,还是SQL语句,都是写在XML文件中的,那么mybatis是如何解析这些XML文件呢?这就是本文将要学习的就是,mybatis解析器XPathParser。MyBatis在初始化过程中处理mybatis-config.xml配置文件以及映射文件时,使用的是DOM解析方式,并结合使用XPath解析XML配置文...原创 2018-06-09 21:44:21 · 1004 阅读 · 0 评论 -
Mybatis源码学习之类型转换(四)
简述JDBC数据类型与Java语言中的数据类型并不是完全对应的,所以在PreparedStatement为SQL语句绑定参数时,需要从Java类型转换成JDBC类型,而从结果集中获取数据时,则需要从JDBC类型转换成Java类型。MyBatis使用类型处理器完成上述两种转换。以下是包org.apache.ibatis.type下所有类的继承关系,每一个jdbc类型都对应一个相应的类型转...原创 2018-06-17 17:57:23 · 1215 阅读 · 0 评论 -
Mybatis源码学习之反射工具(三)
简述MyBatis在进行参数处理、结果映射等操作时,会涉及大量的反射操作。Java中的反射虽然功能强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,该模块位于org.apache.ibatis.reflection包中,它对常见的反射操作做了进一步封装,提供了更加简洁方便的反射API。Reflector & Reflect...原创 2018-06-10 15:13:08 · 877 阅读 · 0 评论 -
Mybatis源码学习之日志(五)
简述在Java开发中常用的日志框架有Log4j、Log4j2、Apache Commons Log、java.util.logging、slf4j等,这些工具对外的接口并不相同。为了统一这些工具的接口,MyBatis定义了一套统一的日志接口供上层使用,并为上述常用的日志框架提供了相应的适配器。适配器模式首先,我们简单介绍设计模式中有六大原则。 单一职责原则: 不要存在多于一个导...原创 2018-06-18 15:21:04 · 335 阅读 · 0 评论 -
Mybatis源码学习之资源加载(六)
类加载器简介Java虚拟机中的类加载器(ClassLoader)负责加载来自文件系统、网络或其他来源的类文件。Java虚拟机中的类加载器默认使用的是双亲委派模式,如图所示,其中有三种默认使用的类加载器,分别是Bootstrap ClassLoader、Extension ClassLoader和System ClassLoader(也被称为Application ClassLoader...原创 2018-07-08 18:24:55 · 469 阅读 · 0 评论 -
Mybatis源码学习之DataSource(七)_1
简述在数据持久层中,数据源是一个非常重要的组件,其性能直接关系到整个数据持久层的性能。在实践中比较常见的第三方数据源组件有Apache Common DBCP、C3P0、Proxool等,MyBatis不仅可以集成第三方数据源组件,还提供了自己的数据源实现。 常见的数据源组件都实现了javax.sql.DataSource接口,MyBatis自身实现的数据源实现也不例外。MyBatis提供...原创 2018-08-04 15:14:56 · 1854 阅读 · 0 评论 -
Mybatis源码学习之DataSource(七)_2
接上节数据源,本节我们将继续学习未完成的部分,包括无连接池情况下的分析、为什么使用连接池、及mybatis连接池的具体管理原理不使用连接池的UnpooledDataSource当 的type属性为【UNPOOLED】时,MyBatis首先会实例化一个UnpooledDataSourceFactory工厂实例,然后通过getDataSource()方法返回一个UnpooledDataSo...原创 2018-08-04 18:46:43 · 328 阅读 · 0 评论 -
Mybatis源码学习之事务管理(八)
简述在实际开发中,数据库事务的控制是一件非常重要的工作,本文将学习Mybatis对事务的管理机制。在Mybatis中基于接口 Transaction 将事务分为两种,一种是JdbcTransaction, 另一种是ManagedTransaction,接下来本文将从源码的角度解读 Transaction 接口的不同实现及其区别。 MyBatis将事务抽象成 Transaction 接口,...原创 2018-08-11 17:57:14 · 167 阅读 · 0 评论