由 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 的创建过程。
➡️