mybatis源码分析1 - 框架
1 源码结构
我们分析的mybatis源码version为3.4.5,mybaits-spring源码version为2.0.0-SNAPSHOT。先看mybatis的源码目录结构,如下图所示。
我们只用看src/main/java下的目录即可。
- annotations:注解定义,我们知道mybatis配置可以采用XML文件形式,也可以采用注解形式
- binding:主要是mapper动态代理绑定相关的类,比较重要的是MapperProxy,它是mapper动态代理的InvocationHandler,mapper的方法调用都是通过它的invoke方法代理的。
- builder:各种builder模式构造对象所使用的类,比较重要的是XMLConfigBuilder,它解析了XML文件,并利用XML文件中的键值对,设置了Configuration对象的相关变量。它是mybatis初始化阶段很重要的类。
- cache:实现缓存的类,包括cache实体和cache策略。mybatis中很多地方都是用到了cache,比如sqlSession内的一级缓存,mapper内的二级缓存等。
- cursor:游标,在mybatis 3.4.0中,新增了返回值为游标cursor的方法,如sqlSession的selectCursor。游标的优点在于,当查询大量数据时,不需要一次性将所有数据得到,可以利用游标来逐个或分批处理,从而大大减少内存占用。mybatis的默认cu
mybatis源码分析1 - 框架相关推荐
- MyBatis 源码分析 - 插件机制
1.简介 一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展.这样的好处是显而易见的,一是增加了框架的灵活性.二是开发者可以结合实际需求,对框架进行拓展,使其能够更好的工作.以 My ...
- MyBatis 源码分析 - 缓存原理
1.简介 在 Web 应用中,缓存是必不可少的组件.通常我们都会用 Redis 或 memcached 等缓存中间件,拦截大量奔向数据库的请求,减轻数据库压力.作为一个重要的组件,MyBatis 自然 ...
- MyBatis 源码分析 - SQL 的执行过程
本文速览 本篇文章较为详细的介绍了 MyBatis 执行 SQL 的过程.该过程本身比较复杂,牵涉到的技术点比较多.包括但不限于 Mapper 接口代理类的生成.接口方法的解析.SQL 语句的解析.运 ...
- MyBatis 源码分析 - 映射文件解析过程
1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...
- MyBatis 源码分析系列文章导读
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
- Mybatis源码分析第一天------Mybatis实用篇
Mybatis源码分析第一天------Mybatis实用篇 一切最基本的操作就是参考官方文档:https://mybatis.org/mybatis-3/zh/configuration.html ...
- MyBatis 源码分析系列文章导读 1
1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章.本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说 ...
- Mybatis源码分析: MapperMethod功能讲解
canmengqian </div><!--end: blogTitle 博客的标题和副标题 --> <div id="navigator"> ...
- MyBatis源码分析(一)MyBatis整体架构分析
文章目录 系列文章索引 一.为什么要用MyBatis 1.原始JDBC的痛点 2.Hibernate 和 JPA 3.MyBatis的特点 4.MyBatis整体架构 5.MyBatis主要组件及其相 ...
最新文章
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- webpack配置vue组件加载器
- 【学习笔记】Tableau安装与界面介绍
- linux统计日志,Linux一些常使用的统计日志 方法
- SQLite使用手记
- vue 公用组件开发 确认框confirm
- Leetcode--397. 整数替换
- 行上下移动_这要是在我家,我是不会把上下铺这样设计的,看着特别,打扫困难...
- 数字通信系统的主要性能指标
- 华为机试HJ72:百钱买百鸡问题
- 基于感知哈希算法的图像相似匹配计算实战
- 软件测试面试常用Linux命令总结
- 基于经纬度的批量高程查询——python
- 阿里云短信接口方法使用
- php程序员 合川_重庆PHP程序员工资如何?
- 造数常用的Excel表达式
- IT江湖之怎样成为IT界的西门吹雪和独孤求败
- Kafka(一)- Kafka 概述
- serializers.serialize
- 机器学习-常用八大神经网络框架