由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource

💡 原文中文,约16700字,阅读约需40分钟。
📝

内容提要

本文介绍了 MyBatis 框架中的核心类 MappedStatement,强调了信息隐藏设计原则和建造者模式的应用。MappedStatement 负责管理 SQL 映射信息,解析 XML 文件中的 SQL 语句,并根据静态或动态 SQL 创建 SqlSource 对象。通过源码分析,探讨了方法长度、单一职责原则及方法编排等编程规范。

🎯

关键要点

  • MappedStatement 是 MyBatis 框架中的核心类,负责管理 SQL 映射信息。
  • 信息隐藏设计原则在 MappedStatement 中得到了应用,内部类和接口仅在特定类内访问。
  • MappedStatement 的创建遵循建造者模式,简化了对象构建过程。
  • MappedStatement 对象对应 XML 映射文件中的 SQL 标签,包含多个重要字段。
  • XMLStatementBuilder.parseStatementNode 方法将 XML 文件中的 SQL 实例化为 MappedStatement 对象。
  • SqlSource 接口用于创建 SQL 语句,支持静态和动态 SQL 的处理。
  • MyBatis 提供多种 SqlSource 实现类,适用于不同的 SQL 场景。
  • 动态 SQL 的解析通过 XMLScriptBuilder 实现,支持多种动态标签。
  • MappedStatement 的构建过程使用了建造者模式,隐藏了复杂的构造逻辑。
  • 建造者模式适用于构建字段较多的复杂对象,简化了 MappedStatement 的创建过程。
➡️

继续阅读