一 Mapper代理类说明 Mapper代理类的相关代码,主要在org.apache.ibatis.bind绑定包中,以下是该包下所有类的说明: 1 2 3 4 5 6 7 8 9 10 . └── org └── apache └── ibatis └── binding ├── BindingException.java 绑定异常 ├── MapperMethod.java 映射方法 ├── MapperProxy.java 映射器代理
一 缓存类说明 缓存类的相关代码,主要在包org.apache.ibatis.cache中,以下是该包下所有类的说明: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 . └── org └── apache └── ibatis └── cache ├── Cache.java 缓存提供者的接口 ├── CacheException.java 缓存异常类 ├── Cach
一 类型处理器说明 类型处理器代码主要在org.apache.ibatis.type包下,类型处理器类说明如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 . └── org └── apache └── ibatis └── type
一 游标说明 游标的代码主要在org.apache.ibatis.cursor包下,主要包含一个 org.apache.ibatis.cursor.Cursor接口类和一个org.apache.ibatis.cursor.defaults.DefaultCursor实现类。 游标作用: * 游标协定以使用Iterator延迟处理获取行数据。 * 标非常适合处理通常不适合内存的数百万个项目查询。 * 如果在resultMaps中使用集合,则必须使用resultMap的id列对游标SQL查询进行排序(resultOrdered =“ true”)。 二 游标源码解读 Cursor游标接
一 懒加载机制说明 懒加载机制相关代码在org.apache.ibatis.executor.loader包下,主要是针对嵌套结果进行懒加载,在03 源码分析-Mybatis源码阅读-执行器 文章中已经有介绍该包下所有类的相关说明。UML图如下: 二 懒加载机制关键源码解读 ProxyFactory代理工厂接口类源码解读如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /** * 代理工厂接口 * @author Eduardo Macarron */ public inte
一 主键生成器说明 主键生成器代码在org.apache.ibatis.executor.keygen包下,在03 源码分析-Mybatis源码阅读-执行器 文章中已经有介绍该包下所有类的相关说明。该包主要包含一个接口类和两个实现类,如下: 二 主键生成器源码解读 KeyGenerator接口类源码解读如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 /** * 主键生成器接口 * @author Clinton Begin */ public interface KeyGenerato
一 结果集处理器说明 结果集处理器的代码主要在org.apache.ibatis.executor.resultset包下,在03 源码分析-Mybatis源码阅读-执行器 文章中已经有介绍该包下所有类的相关说明。 二 结果集处理器源码解读 结果集处理器的主要是一个接口定义类和一个默认实现类,虽然如此,但是实现类还是比较复杂的,先看一下结果处理器的UML图,如下图: 但是结果集处理器有比较多相关的结果处理类,UML图如下: 先看看结果集处理器接口定义类ResultSetHandler: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1
一 参数处理器说明 参数处理器的接口定义在org.apache.ibatis.executor.parameter包下,但是他的默认实现在SQL解析相关的包org.apache.ibatis.scripting下。 UML图也很简单,只有一个接口和一个实现如下: 二 参数处理器源码解读 参数处理器接口ParameterHandler很简单仅定义了两个方法如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package org.apache.ibatis.executor.parameter; i
一 语句处理器说明 语句处理器的代码在org.apache.ibatis.executor.statement包下,在03 源码分析-Mybatis源码阅读-执行器 文章中已经有介绍该包下所有类的相关说明。 二 语句处理器相关源码解读 首先,先看一下语句处理器的UML图,如下图: 和执行器类似,在语句处理器中BaseStatementHandler使用了模板方法模式,RoutingStatementHandler使用了装饰模式,了解这两个模式有助于我们更容易阅读源码。 先来看语句处理器接口StatementHandler的关键源码,看看它给我们提供了哪些方法,源码如下: 1 2 3
一 执行器包下类的说明 执行器的代码,主要在包org.apache.ibatis.executor中,其实除了执行器之外,还包含语句处理器、参数处理器、结果集处理器等。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 . └── org └── apache └── ibatis