1 源码结构

我们分析的mybatis源码version为3.4.5,mybaits-spring源码version为2.0.0-SNAPSHOT。先看mybatis的源码目录结构,如下图所示。

我们只用看src/main/java下的目录即可。

  1. annotations:注解定义,我们知道mybatis配置可以采用XML文件形式,也可以采用注解形式
  2. binding:主要是mapper动态代理绑定相关的类,比较重要的是MapperProxy,它是mapper动态代理的InvocationHandler,mapper的方法调用都是通过它的invoke方法代理的。
  3. builder:各种builder模式构造对象所使用的类,比较重要的是XMLConfigBuilder,它解析了XML文件,并利用XML文件中的键值对,设置了Configuration对象的相关变量。它是mybatis初始化阶段很重要的类。
  4. cache:实现缓存的类,包括cache实体和cache策略。mybatis中很多地方都是用到了cache,比如sqlSession内的一级缓存,mapper内的二级缓存等。
  5. cursor:游标,在mybatis 3.4.0中,新增了返回值为游标cursor的方法,如sqlSession的selectCursor。游标的优点在于,当查询大量数据时,不需要一次性将所有数据得到,可以利用游标来逐个或分批处理,从而大大减少内存占用。mybatis的默认cu

mybatis源码分析1 - 框架相关推荐

  1. MyBatis 源码分析 - 插件机制

    1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...

  2. MyBatis 源码分析 - 缓存原理

    1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...

  3. MyBatis 源码分析 - SQL 的执行过程

    本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...

  4. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  5. MyBatis 源码分析系列文章导读

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  6. Mybatis源码分析第一天------Mybatis实用篇

    Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html ...

  7. MyBatis 源码分析系列文章导读 1

    1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...

  8. Mybatis源码分析: MapperMethod功能讲解

    canmengqian </div><!--end: blogTitle 博客的标题和副标题 --> <div id="navigator"> ...

  9. MyBatis源码分析(一)MyBatis整体架构分析

    文章目录 系列文章索引 一.为什么要用MyBatis 1.原始JDBC的痛点 2.Hibernate 和 JPA 3.MyBatis的特点 4.MyBatis整体架构 5.MyBatis主要组件及其相 ...

最新文章

  1. Makefile中指示符“include”、“-include”和“sinclude”的区别
  2. webpack配置vue组件加载器
  3. 【学习笔记】Tableau安装与界面介绍
  4. linux统计日志,Linux一些常使用的统计日志 方法
  5. SQLite使用手记
  6. vue 公用组件开发 确认框confirm
  7. Leetcode--397. 整数替换
  8. 行上下移动_这要是在我家,我是不会把上下铺这样设计的,看着特别,打扫困难...
  9. 数字通信系统的主要性能指标
  10. 华为机试HJ72:百钱买百鸡问题
  11. 基于感知哈希算法的图像相似匹配计算实战
  12. 软件测试面试常用Linux命令总结
  13. 基于经纬度的批量高程查询——python
  14. 阿里云短信接口方法使用
  15. php程序员 合川_重庆PHP程序员工资如何?
  16. 造数常用的Excel表达式
  17. IT江湖之怎样成为IT界的西门吹雪和独孤求败
  18. Kafka(一)- Kafka 概述
  19. serializers.serialize
  20. 机器学习-常用八大神经网络框架

热门文章

  1. 2018年12月10日(作业4)
  2. oracle 如何查看权限,如何查看Oracle的用户权限
  3. linux sysrq使用方法,[转载]Linux中SysRq的使用
  4. redux|react
  5. UPC-8377 Playoff(深搜暴力)
  6. Sklearn中的F1值计算
  7. 2023上海化妆品原料展览会
  8. 【寒假每日一题】AcWing 3443. 学分绩点(补)
  9. 罗技魏文杰:入门级市场有很大需求
  10. 拜耳集全球创新服务中国农业,积极构建粮食系统韧性