mybatis之MappedStatement
MyBatis MappedStatement 深度解析:Mapper 节点的 “配置容器” 与 SQL 执行的 “元数据核心”
在 MyBatis 中,MappedStatement 是 Mapper 配置(XML / 注解)与 SQL 执行之间的关键桥梁—— 它将 Mapper 中单个 SQL 节点(如 <select>、<insert>)的所有配置(SQL 语句、参数映射、结果映射、缓存策略等)封装为一个可执行的 “元数据对象”,是 MyBatis 解析配置、生成 SQL、执行查询的核心依据。从 “核心定位→属性解析→生命周期→实战关联” 四个维度,彻底拆解 MappedStatement 的作用与价值。
MappedStatement 核心定位:SQL 节点的 “配置容器”
MyBatis 启动时,会扫描所有 Mapper 接口和 XML 文件,将每个 SQL 节点(如 <select id="selectUserById">) 解析为一个 MappedStatement 对象,存储在 Configuration 的 mappedStatements 集合中(key 为 namespace + id,如 com.example.UserMapper.selectUserById)。
MappedStatement 的核心作用是:
- 配置聚合:集中管理单个 SQL 节点的所有配置(SQL 语句、参数、结果、缓存等),避免配置分散;
- 元数据提供:为
Executor(执行器)、StatementHandler(SQL 处理器)等组件提供执行所需的全部元数据; - 一致性保障:确保 SQL 执行过程中,参数绑定、结果映射、缓存策略等配置的一致性。
MappedStatement 核心属性解析
MappedStatement 的属性与 Mapper 节点的配置一一对应,每个属性都直接影响 SQL 的执行逻辑。按 “核心功能分组” 解析关键属性:
