MyBatis源码实现
瘦子没有夏天
大家好,我是Leon。一个专业与Java领域的程序员,偶尔理理财。欢迎大家来阅读我博客,如果你发现极个别文章和书籍内容雷同,请叫我勤奋的code搬运工٩(๑❛ᴗ❛๑)۶。我的邮箱:gyoomi0709@foxmail.com
展开
-
MyBatis源码实现之环境准备
一、引言作为一名Java高级开发人员,阅读源码的功底是其重要的基础技能。除了Spring系列的源码之外,就是MyBatis的源码阅读,好了,废话不多说直接开干。声明:这里我使用的3.4.6版本。不同版本之间代码略有差异。二、搭建1.创建源码阅读项目(Maven方式)1.1 以Maven方式创建项目在这里我使用的idea创建的(过程略)。效果如下:2.导入MyBatis相关源码...原创 2018-11-13 13:48:07 · 962 阅读 · 1 评论 -
MyBatis源码实现之Configuration加载(上)
MyBatis-config.xml转为Document对象先来看下加载配置文件的入口: private static final String NAME_SPACE = "UserMapper."; private static SqlSessionFactory ssf; private static R原创 2018-12-04 09:29:19 · 3608 阅读 · 1 评论 -
MyBatis源码实现之解析器
解析器在MyBatis 中涉及多个XML 配置文件,因此我们首先介绍XML 解析的相关内容。XML解析常见的方式有三种, 分别是: DOM ( Document Object Model )解析方式和SAX ( Simple APIfor XML )解析方式,以及从JDK6.0 版本开始, JDK 开始支持的StAX ( Streaming API for XML)解析方式。在开始介绍My...原创 2018-12-25 11:04:01 · 876 阅读 · 0 评论 -
MyBatis源码实现之反射工具箱之Reflector&ReflectorFactory
反射工具箱之Reflector&ReflectorFactoryMyBatis在进行参数处理、结果映射等操作时,会涉及大量的反射操作。Java 中的反射虽然功能强大,但是代码编写起来比较复杂且容易出错,为了简化反射操作的相关代码,MyBatis提供了专门的反射模块,该模块位于org.apache.ibatis.reflection 包中,它对常见的反射操作做了进一步封装,提供了更加...原创 2019-04-01 10:04:39 · 1241 阅读 · 1 评论 -
MyBatis源码实现之反射工具箱TypeParameterResolver
反射工具箱之TypeParameterResolverType在开始介绍TypeParameterResolver 之前,先简单介绍一下Type接口的基础知识。Type 是所有类型的父接口,它有四个子接口和一个实现类,如图2-10 所示。下面来看这些子接口和子类所代表的类型。Class 比较常见,它表示的是原始类型。Class 类的对象表示NM 中的一个类或接口,每个Java 类在...原创 2019-04-22 22:14:24 · 1111 阅读 · 3 评论 -
MyBatis源码实现之反射工具箱之ObjectFactory
反射工具箱之ObjectFactoryMyBatis中有很多模块会使用到ObjectFactory接口,该接口提供了多个create()方法的重载,通过这些create()方法可以创建指定类型的对象。ObjectFactory 接口的定义如下:public interface ObjectFactory { // 设置配置信息 void setProperties(Properti...原创 2019-05-20 23:02:18 · 317 阅读 · 0 评论 -
MyBatis源码实现之反射工具箱之Property工具集
反射工具箱之Property工具集本文主要介绍反射模块中使用到的三个属性工具类,分别是PropertyTokenizer 、PropertyNamer和PropertyCopier。PropertyTokenizer在使用MyBatis 的过程中,我们经常会碰到一些属性表达式,例如,在查询某用户( User)的订单( Order )的结果集如表2-2 所示。假设现在需要将结果集中的i...原创 2019-05-22 23:31:37 · 547 阅读 · 1 评论