调用方 类org.apache.ibatis.builder.xml.XMLMapperBuilder private void configurationElement(XNode context) { try { String namespace = context.getStringAttribute("namespace"); if (namespace != null && !namespace.equals("")) { this.bui…
Mybatis源码分析: 1.配置文件解析: 1.1源码阅读入口: org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(); 功能:解析全局配置文件,调用parse.evalNode()方法,将指定路径的config配置文件转换为XNode对象,然后调用parseConfiguration()方法逐步解析配置文件中的各个节点: 1.2 mapperElement():解析mappers标签,解析过程中就是对映射文件的解析过程 2. Mappe…
六个基本工具图集 图片来源:https://my.oschina.net/zudajun/blog/668596 ObjectFactory 类图 接口定义 public interface ObjectFactory { void setProperties(Properties var1); <T> T create(Class<T> var1); <T> T create(Class<T> var1, List<Class<?>>…
说明 mybatis初始化过程 就是解析xml到封装成Configuration对象 供后续使用 SqlSessionFactoryBuilder 代码例子 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder .build(ClassLoader.getSy…
承接上篇博客, 本文探究MyBatis中的Executor, 如下图: 是Executor体系图 本片博客的目的就是探究如上图中从顶级接口Executor中拓展出来的各个子执行器的功能,以及进一步了解Mybatis的一级缓存和二级缓存 预览: BaseExecutor :实现了Executor的全部方法,包括对缓存,事务,连接提供了一系列的模板方法, 这写模板方法中留出来了四个抽象的方法等待子类去实现如下 protected abstract int doUpdate(MappedStateme…
该篇正式开始学习mybatis的源码,本篇主要学习mybatis是如何加载配置文件mybatis-config.xml的, 先从测试代码入手. public class V1Test { public static void main(String[] args) { try (InputStream is = Resources.getResourceAsStream("mybatis-config.xml")) { SqlSessionFactory sqlSessionFacto…
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6724223.html 1.回顾 上面的几篇解析了类型模块,在MyBatis中类型模块包含的就是Java类型与Jdbc类型,和其间的转换处理.类型模块在整个MyBatis功能架构中属于基础组件之一,是提前注册到注册器中,并配置到Configuration中备用. 从这一篇开始解析Parsing解析模块,这个模块不同于Type模块,这个模块更像是一套工具模块.本篇先解析通用标记解析器Gene…
第一天阅读源码及创建时序图.(第一次用prosson画时序图,挺丑..) 1.  调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法: 2.  SqlSessionFactoryBuilder 会根据输入流 inputStream 等信息创建XMLConfigBuilder 对象 ; 3.  SqlSessionFactoryBuilder 调用 XMLConfigBuilder 对象的 parse() 方法: 4.  XMLConfigB…
这一篇文章主要是记录Mybatis的动态代理学习成果,如果对源码感兴趣,可以看一下上篇文章  https://www.cnblogs.com/ChoviWu/p/10118051.html 阅读本篇的读者应该都已经了解了用mapper调用xml下的内容是利用动态代理,本文将对这一部分的源码一探究竟 我们都知道,spring用bean注入的方式是以代理的方式注入的,那么当mapper调用更下游的(xml)的服务的时候,这个操作是怎么运作的呢? 在spring初始化bean的时候Sqlsession…
说明 读了3遍:https://my.oschina.net/zudajun/blog/665956 现在统一整理成笔记 并跟着源码一行一行调试 统一整理起来 SqlSession 接口定义 public interface SqlSession extends Closeable { <T> T selectOne(String var1); <T> T selectOne(String var1, Object var2); <E> List<E> se…