写点什么

Mybatis3 源码解析系列

作者:
  • 2022 年 2 月 16 日
  • 本文字数:1183 字

    阅读完需:约 4 分钟

简介

Mybatis 作为一个优秀的 Java 持久化框架,在我们的日常工作中相信都会用到,本次源码解析系列,就开始探索下 Mybatis

总结

在 MyBatis 的学习中,首先通读了《MyBatis3 源码深度解析》一遍,然后抱着如何去写一个基本功能的 MyBatis 框架的想法,又读了 2-3 遍


心中有了大致的想法,然后再去通过 MyBatis 的示例去走一遍源码,注重关注了一些在写 Demo 中可能会遇到的细节点


后面花了两三天的时间,把基本功能的框架 Dome 给写了出来,各个感觉还是可以的,达到了自己预期的目标


下面再总结下 MyBatis 的学习:


下面一个图,来源于:《MyBatis3 源码深度解析》基本涵盖了 MyBatis 的核心:



最右侧的是全局配置 Configuration:这里负责前期 Mapper 的解析和 TypeHandler 注册相关的,在初始化阶段,把在后期 SQL 查询前的参数解析和结果转换时需要用到的东西先存下来,便于后面获取用于处理


左侧是 MyBatis 的核心类:


  • SQLSession:可以算是整个 Mybatis 的入口,数据库源与和 Mapper 的代理对象从这里进行获取

  • Executor:语句执行入口

  • StatementHandler:可以算是 JDBC 中对于 Statement 的封装,主要是语句生成相关方面的处理

  • ParameterHandler:SQL 查询时参数转换处理,如果有参数则调用 TypeHandler 相关逻辑

  • ResultSetHandler:负责 SQL 结果的处理,如果有返回结果需要处理,则调用 TypeHandler 相关逻辑

  • TypeHandler:负责 JavaType 与 jdbcType 的相关转换


感觉核心逻辑主线就是这些了,自己在 Demo 中除了 ParameterHandler 没有进行实现,其他基本都有体现


当然,读代码时候发现,细节还是挺多的,还有很多的地方没有仔细去研究,目前就简单看了下,有个印象,方便如果以后遇到问题,也能去定位后,结合问题场景仔细研究


在研究的过程中发现这些数据库的相关的框架,基本都是基于 JDBC 规范的 Statement 等去做文章的,比如 MyBatis 可以结合 HikariCP,再结合 Shardingsphere,感觉挺有意思,自己之前写过一篇基于这三者做多数据源的文章:ShardingSphere JDBC 分库实现多数据库源。写完还有点懵,现在就知道哪些 Bean 定义的相关原理和作用,做到了心中有数


本系列有源码解析部分和 Demo 实现部分,涉及到的范围就是上面的核心逻辑主线部分,还有如动态 SQL(这个在日常开发中经常使用)之类没有去探索,但大致原理看书了解一些,留待以后有空再研究

解析文章目录

Demo 编写

完整的工程已放到 GitHub 上:https://github.com/lw1243925457/MybatisDemo/tree/master/


参考链接

  • 《MyBatis3 源码深度解析》:这本书确实不错,通读一两遍后,自己探索 Debug,有很多的帮助

发布于: 刚刚阅读数: 2
用户头像

关注

还未添加个人签名 2018.09.09 加入

代码是门手艺活,也是门艺术活

评论

发布
暂无评论
Mybatis3 源码解析系列