随笔分类 - mybatis 3.5
摘要:本篇博客就是 myabtis 系列的最后一篇了,还剩 ResultSetHandler 没有分析;作为整个 mybatis 最复杂最繁琐的部分,我不打算按步骤一次详解,因为里面的主要内容就是围绕 resultMap 按层次结构依次解析的,其中运用最多的就是反射,所以我这里将围绕延迟加载重点分析,另外
阅读全文
摘要:一、KeyGenerator 概述 在平时开发的时候经常会有这样的需求,插入数据返回主键,或者插入数据之前需要获取主键,这样的需求在 mybatis 中也是支持的,其中主要的逻辑部分就在 KeyGenerator 中,下面是他的类图: 其中: NoKeyGenerator:默认空实现,不需要对主键单
阅读全文
摘要:分析到这里的时候,mybatis 初始化、接口、事务、缓存等主要功能都已经讲完了,现在就还剩下 StatementHandler 这个真正干活的家伙没有分析了;所以接下来的博客内容主要和数据库的关系比较密切,而 StatementHandler 的主要流程也基本是和 JDBC 的流程是一一对应的;
阅读全文
摘要:本篇博客将主要讲解 mybatis 插件的主要流程,其中主要包括动态代理和责任链的使用; 一、mybatis 拦截器主体结构 在编写 mybatis 插件的时候,首先要实现 Interceptor 接口,然后在 mybatis conf.xml 中添加插件, 这里需要注意的是,添加的插件是有顺序的,
阅读全文
摘要:本篇博客主要讲了 mybatis 一二级缓存的构成,以及一些容易出错地方的示例分析; 一、mybatis 缓存体系 mybatis 的一二级缓存体系大致如下: 首先当一二级缓存同时开启的时候,首先命中二级缓存; 一级缓存位于 BaseExecutor 中不能关闭,但是可以指定范围 STATEMENT
阅读全文
摘要:本文将主要介绍 Executor 的整体结构和各子类的功能,并对比效率; 一、Executor 主体结构 1. 类结构 executor 的类结构如图所示: 其各自的功能: BaseExecutor:基础执行器,封装了子类的公共方法,包括一级缓存、延迟加载、回滚、关闭等功能; SimpleExecu
阅读全文
摘要:mybatis 的初始化还是相对比较复杂,但是作者在初始化过程中使用了多种设计模式,包括建造者、动态代理、策略、外观等,使得代码的逻辑仍然非常清晰,这一点非常值得我们学习; 一、mapper 初始化主要流程 mybatis 初始化的过程中,主要是 XML 配置的解析,不同的部分又分别委托给了不同的解
阅读全文
摘要:本篇博客将主要对 mybatis 整体介绍,包括 mybatis 的项目结构,执行的主要流程,初始化流程,API 等各模块进行简单的串联,让你能够对 mybatis 有一个整体的把握。另外在 mybatis 源码的阅读过程中,如果不想写 demo 可以直接使用项目中的单元测试; 一、mybatis
阅读全文
浙公网安备 33010602011771号