# mybatis-zq **Repository Path**: zhengqingya/mybatis-zq ## Basic Information - **Project Name**: mybatis-zq - **Description**: 手写简易版MyBatis,可根据提交日志来循序渐进的学习。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.bilibili.com/cheese/play/ss24246 - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 7 - **Created**: 2024-04-20 - **Last Updated**: 2025-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 手写mybatis - 视频教程:https://www.bilibili.com/cheese/play/ss24246 - 代码仓库:https://gitee.com/zhengqingya/mybatis-zq - mybatis源码:https://github.com/orgs/mybatis/repositories?type=all - `mybatis-3`:https://github.com/mybatis/mybatis-3 - `mybatis-spring`:https://github.com/mybatis/spring - `mybatis-spring-boot-starter`:https://github.com/mybatis/spring-boot-starter ### 概览 #### 一、手写MyBatis - [01-前言](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/01-前言.md) - [02-初始化项目](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/02-初始化项目.md) - [03-git仓库管理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/03-git仓库管理.md) - [04-回顾原生JDBC](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/04-回顾原生JDBC.md) - [05-原生JDBC缺点](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/05-原生JDBC缺点.md) - [06-UserMapper调用查询](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/06-UserMapper调用查询.md) - [07-设计模式-静态代理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/07-设计模式-静态代理.md) - [08-设计模式-jdk动态代理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/08-设计模式-jdk动态代理.md) - [09-反射](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/09-反射.md) - [10-设计模式-cglib动态代理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/10-设计模式-cglib动态代理.md) - [11-通过代理工厂拿到UserMapper](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/11-通过代理工厂拿到UserMapper.md) - [12-拿到@Select注解sql值](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/12-拿到@Select注解sql值.md) - [13-#{}参数需要转换为?](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/13-%23%7B%7D参数需要转换为?.md) - [14-SQL解析器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/14-SQL解析器.md) - [15-策略模式实现标记处理器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/15-策略模式实现标记处理器.md) - [16-MapperProxy完善SQL解析](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/16-MapperProxy完善SQL解析.md) - [17-UserMapper方法参数值获取](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/17-UserMapper方法参数值获取.md) - [18-TypeHandler设置ps参数值](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/18-TypeHandler设置ps参数值.md) - [19-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/19-小结.md) - [20-拿到mapper返回类型值](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/20-拿到mapper返回类型值.md) - [21-拿到sql返回字段名称](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/21-拿到sql返回字段名称.md) - [22-ResultSet结果映射](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/22-ResultSet结果映射.md) - [23-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/23-小结.md) - [24-mapper配置解析-01](./01-手写MyBatis/24-mapper配置解析) - [25-mapper配置解析-02](./01-手写MyBatis/24-mapper配置解析) - [26-mapper配置解析-03](./01-手写MyBatis/24-mapper配置解析) - [27-MapperProxy优化mapper配置获取方式](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/27-MapperProxy优化mapper配置获取方式.md) - [28-jdbc批处理保存数据](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/28-jdbc批处理保存数据.md) - [29-SQL执行器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/29-SQL执行器.md) - [30-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/30-小结.md) - [31-SqlSession增删改查](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/31-SqlSession增删改查.md) - [32-mapper代理修改为SqlSession版](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/32-mapper代理修改为SqlSession版.md) - [33-工厂模式生产SqlSession](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/33-工厂模式生产SqlSession.md) - [34-SqlSession工厂构建者](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/34-SqlSession工厂构建者.md) - [35-mapper增删改查方法](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/35-mapper增删改查方法.md) - [36-解析mapper方法的sql命令类型](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/36-解析mapper方法的sql命令类型.md) - [37-MapperProxy完善sqlSession增删改查](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/37-MapperProxy完善sqlSession增删改查.md) - [38-完善sql执行器-增删改操作-01](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/38-完善sql执行器-增删改操作-01.md) - [39-完善sql执行器-增删改操作-02](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/39-完善sql执行器-增删改操作-02.md) - [40-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/40-小结.md) - [41-MapperProxy兼容增删改返回值类型](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/41-MapperProxy兼容增删改返回值类型.md) - [42-优化sql执行器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/42-优化sql执行器.md) - [43-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/43-小结.md) - [44-插件-功能分析](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/44-插件-功能分析.md) - [45-插件-代理模式](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/45-插件-代理模式.md) - [46-插件-多插件功能增强](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/46-插件-多插件功能增强.md) - [47-插件-链式调用处理结果值](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/47-插件-链式调用处理结果值.md) - [48-插件-链式调用优化](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/48-插件-链式调用优化.md) - [49-插件-责任链模式](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/49-插件-责任链模式.md) - [50-责任链插件包装sql执行器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/50-责任链插件包装sql执行器.md) - [51-完成一个简单的分页插件功能](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/51-完成一个简单的分页插件功能.md) - [52-发现问题-增删改不能使用分页插件](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/52-发现问题-增删改不能使用分页插件.md) - [53-自定义注解-插件拦截指定类方法](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/53-自定义注解-插件拦截指定类方法.md) - [54-拿到拦截器注解中的签名信息](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/54-拿到拦截器注解中的签名信息.md) - [55-插件根据签名控制是否生效](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/55-插件根据签名控制是否生效.md) - [56-插件-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/56-插件-小结.md) - [57-结果处理器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/57-结果处理器.md) - [58-实现sql日志输出](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/58-实现sql日志输出.md) - [59-slf4j日志依赖](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/59-slf4j日志依赖.md) - [60-参数处理器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/60-参数处理器.md) - [61-预编译语句处理器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/61-预编译语句处理器.md) - [62-sql执行器通过语句处理器调用](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/62-sql执行器通过语句处理器调用.md) - [63-完善sql日志插件(支持增删改查所有sql日志)](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/63-完善sql日志插件(支持增删改查所有sql日志).md) - [64-sql执行流程](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/64-sql执行流程.md) - [65-jdbc连接耗时](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/65-jdbc连接耗时.md) - [66-数据库连接池](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/66-数据库连接池.md) - [67-sql执行器通过连接池拿到连接](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/67-sql执行器通过连接池拿到连接.md) - [68-原生jdbc事务管理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/68-原生jdbc事务管理.md) - [69-定义事务接口](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/69-定义事务接口.md) - [70-增删改-开启事务管理](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/70-增删改-开启事务管理.md) - [71-事务隔离级别](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/71-事务隔离级别.md) - [72-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/72-小结.md) - [73-缓存功能](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/73-缓存功能.md) - [74-修复分页bug](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/74-修复分页bug.md) - [75-实现一级缓存](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/75-实现一级缓存.md) - [76-一级缓存测试](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/76-一级缓存测试.md) - [77-二级缓存-01](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/77-二级缓存-01.md) - [78-二级缓存-02-缓存装饰器](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/78-二级缓存-02-缓存装饰器.md) - [79-二级缓存-03](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/79-二级缓存-03.md) - [80-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/80-小结.md) - [81-动态sql-ognl表达式](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/81-动态sql-ognl表达式.md) - [82-动态sql-解析xml配置-01](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/82-动态sql-解析xml配置-01.md) - [83-动态sql-解析xml配置-02](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/83-动态sql-解析xml配置-02.md) - [84-动态sql-解析xml配置-03](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/84-动态sql-解析xml配置-03.md) - [85-动态sql-定义sql节点(组合模式)](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/85-动态sql-定义sql节点(组合模式).md) - [86-动态sql-解析sql节点数据](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/86-动态sql-解析sql节点数据.md) - [87-动态sql-静态文本节点和解析最终sql值](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/87-动态sql-静态文本节点和解析最终sql值.md) - [88-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/88-小结.md) - [89-框架新增解析xml配置和动态sql-01](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/89-框架新增解析xml配置和动态sql-01.md) - [90-框架新增解析xml配置和动态sql-02](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/90-框架新增解析xml配置和动态sql-02.md) - [91-修复分页插件bug](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/91-修复分页插件bug.md) - [92-小结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/92-小结.md) - [93-TextSqlNode解析${}参数](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/93-TextSqlNode解析参数.md) - [94-简易版mybatis完结](doc/手写简易版MyBatis学习笔记/01-手写MyBatis/94-简易版mybatis完结.md) #### 二、debug - [01-debug-基础调试](doc/手写简易版MyBatis学习笔记/02-DEBUG/01-debug-基础调试.md) - [02-debug-字段断点](doc/手写简易版MyBatis学习笔记/02-DEBUG/02-debug-字段断点.md) - [03-debug-异常断点](doc/手写简易版MyBatis学习笔记/02-DEBUG/03-debug-异常断点.md) - [04-debug-方法断点](doc/手写简易版MyBatis学习笔记/02-DEBUG/04-debug-方法断点.md) - [05-debug-stream调试](doc/手写简易版MyBatis学习笔记/02-DEBUG/05-debug-stream调试.md) - [06-debug-线程调试](doc/手写简易版MyBatis学习笔记/02-DEBUG/06-debug-线程调试.md) - [07-debug-手动制造抛出异常和强制返回](doc/手写简易版MyBatis学习笔记/02-DEBUG/07-debug-手动制造抛出异常和强制返回.md) #### 三、源码解析 - [01-源码-拉取](doc/手写简易版MyBatis学习笔记/03-源码解析/01-源码-拉取.md) - [02-源码-准备环境](doc/手写简易版MyBatis学习笔记/03-源码解析/02-源码-准备环境.md) - [03-源码-配置解析-01](doc/手写简易版MyBatis学习笔记/03-源码解析/03-源码-配置解析-01.md) - [04-源码-配置解析-02](doc/手写简易版MyBatis学习笔记/03-源码解析/04-源码-配置解析-02.md) - [05-源码-拿到sqlSession](doc/手写简易版MyBatis学习笔记/03-源码解析/05-源码-拿到sqlSession.md) - [06-源码-sql执行流程-01](doc/手写简易版MyBatis学习笔记/03-源码解析/06-源码-sql执行流程-01.md) - [07-源码-sql执行流程-02](doc/手写简易版MyBatis学习笔记/03-源码解析/07-源码-sql执行流程-02.md) - [08-源码-sql执行流程-03](doc/手写简易版MyBatis学习笔记/03-源码解析/08-源码-sql执行流程-03.md) - [09-源码-#参数和$参数区别](doc/手写简易版MyBatis学习笔记/03-源码解析/09-源码-预编译和占位符参数区别.md) - [10-完结](doc/手写简易版MyBatis学习笔记/03-源码解析/10-完结.md) #### 四、Spring整合 - [01-新建mybatis模块](doc/手写简易版MyBatis学习笔记/04-Spring整合/01-新建mybatis模块.md) - [02-打包跳过测试类](doc/手写简易版MyBatis学习笔记/04-Spring整合/02-打包跳过测试类.md) - [03-新建mybatis-spring模块](doc/手写简易版MyBatis学习笔记/04-Spring整合/03-新建mybatis-spring模块.md) - [04-测试spring管理bean](doc/手写简易版MyBatis学习笔记/04-Spring整合/04-测试spring管理bean.md) - [05-Spring管理UserMapper](doc/手写简易版MyBatis学习笔记/04-Spring整合/05-Spring管理UserMapper.md) - [06-Spring根据包扫描管理bean](doc/手写简易版MyBatis学习笔记/04-Spring整合/06-Spring根据包扫描管理bean.md) - [07-包扫描说明](doc/手写简易版MyBatis学习笔记/04-Spring整合/07-包扫描说明.md) - [08-小结](doc/手写简易版MyBatis学习笔记/04-Spring整合/08-小结.md) - [09-修复分页bug和测试spring事务](doc/手写简易版MyBatis学习笔记/04-Spring整合/09-修复分页bug和测试spring事务.md) - [10-JdbcTemplate事务测试](doc/手写简易版MyBatis学习笔记/04-Spring整合/10-JdbcTemplate事务测试.md) - [11-spring事务管理-01](doc/手写简易版MyBatis学习笔记/04-Spring整合/11-spring事务管理-01.md) - [12-spring事务管理-02](doc/手写简易版MyBatis学习笔记/04-Spring整合/12-spring事务管理-02.md) - [13-小结](doc/手写简易版MyBatis学习笔记/04-Spring整合/13-小结.md) #### 五、SpringBoot整合 - [01-新建starter工程](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/01-新建starter工程.md) - [02-完善starter功能](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/02-完善starter功能.md) - [03-测试starter功能](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/03-测试starter功能.md) - [04-小结](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/04-小结.md) - [05-starter完善mapper包扫描配置](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/05-starter完善mapper包扫描配置.md) - [06-总结](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/06-总结.md) - [07-补充](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/07-补充.md) - [08-完结](doc/手写简易版MyBatis学习笔记/05-SpringBoot整合/08-完结.md)