
由 Mybatis 源码畅谈软件设计
文章平均质量分 93
专栏的内容基于 Mybatis 源码、代码整洁相关的书籍和实际开发、重构经验,致力于帮助程序员保持代码的整洁和规范。同时也宽慰大家与杂乱代码和解,不局限于写好代码,在这之外应有更高的追求和目标
方圆想当图灵
怕什么真理无穷,进一寸有进一寸的欢喜
展开
-
由 Mybatis 源码畅谈软件设计(一):序
从接触软件开发以来,一直对写出优雅的代码抱有执念,工作半年时,偶然接触到《代码整洁之道》,爱不释手,一口气读完,并在很长的时间内践行其中的观点,但是在这践行期间缺少思考和复盘,更多的是一味地信奉和遵守其中的原则,写了不少当时自认为不错而现在回过头看可读性不好的“坏代码”。原创 2025-02-24 00:30:00 · 1073 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource
本节我们来介绍 org.apache.ibatis.mapping.MappedStatement(映射SQL语句声明的类),它是 MyBatis 框架中的一个核心类,也是向后不断学习 Mybatis 源码的基础。原创 2025-02-24 01:00:00 · 360 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(三):简单查询 SQL 执行流程
SQL 查询是 Mybatis 中的核心流程,本节我们来介绍简单 SQL 的执行流程,过程会比较长,期间会认识很多重要的组件,比如 SqlSession、四大处理器(Executor、StatementHandler、ParameterHandler 和 ResultSetHandler)等等,大家先有个脸熟,到具体环节时需要重点关注。原创 2025-02-25 00:30:00 · 1011 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(四):动态 SQL 执行流程
本节我们探究动态 SQL 的执行流程,由于在前一节我们已经对各个组件进行了详细介绍,所以本节不再赘述相关内容,在本节中主要强调静态 SQL 和动态 SQL 执行的不同之处。在这个过程中,SqlNode 相关实现值得关注,它为动态 SQL 标签都定义了专用实现类,遵循单一职责的原则,并且应用了 装饰器模式。最后,我们还会讨论动态 SQL 避免注入的解决方案,它是在 Mybatis 中不可略过的一环。原创 2025-02-25 02:00:00 · 742 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(五):ResultMap 的循环引用
本节我们来了解 Mybatis 是如何处理 ResultMap 的循环引用,它的解决方案非常值得在软件设计中参考。另外作为引申,大家可以了解一下 Spring 是如何解决 Bean 的循环注入的。原创 2025-02-26 00:30:00 · 547 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(六):Interceptor 拦截器的设计
本节我们来介绍 Mybatis 的拦截器 Interceptor,它依靠 @Intercepts 和 @Signature 注解驱动,配置拦截器的切入方法,这种声明方式非常直观,能够准确的知道每个拦截器的作用范围。而且它是非侵入性的,采用了 动态代理模式,在不修改原有逻辑的前提下便能实现功能的扩展,遵循 开闭原则。Spring 框架中的 AOP 也采用的是同样的思想,但是它引入了很多概念(切面、连接点、切入点和通知等等),代码量超过 5000 行,而 Mybatis Interceptor 的实现仅有 37原创 2025-02-26 03:00:00 · 929 阅读 · 0 评论 -
由 Mybatis 源码畅谈软件设计(七):从根上理解 Mybatis 一级缓存
大家好,我是方圆,最近在读Mybatis的源码,之前面试被问过一、二级缓存相关的问题,想着就把这写成一篇博客记录下来吧,供回忆,供参考原创 2021-12-08 19:51:58 · 325 阅读 · 1 评论 -
由 Mybatis 源码畅谈软件设计(八):从根上理解 Mybatis 二级缓存
上一篇文章 从根上理解 Mybatis 一级缓存 讨论一级缓存,本篇则是关于二级缓存,同样地,仍然需要关注它的实现原理,以及要考虑“为什么在已经有了一级缓存的情况下还需要设计二级缓存”的问题,在以后实际业务中的缓存设计提供借鉴和参考。原创 2021-12-10 11:24:40 · 424 阅读 · 1 评论 -
由 Mybatis 源码畅谈软件设计(九):“能用就行” 其实远远不够
到本节 Mybatis 源码中核心逻辑基本已经介绍完了,在这里我想借助 Mybatis 其他部分源码来介绍一些我认为在编程中能 最快提高编码质量的小方法,它们可能比较细碎,希望能对大家有所启发。原创 2025-02-27 00:30:00 · 1167 阅读 · 0 评论