【简写Mybatis】03-Mapper xml的注册和使用
内容提要
本文介绍了Mybatis中Mapper xml的注册和使用。首先通过解析和读取XML文件,封装Mapper文件中的方法操作,并将其保存到实体中。然后介绍了XML装备构建器的作用,以及Configuration类在Mybatis中的重要作用。接着讲解了SqlSessionFactoryBuilder和SqlSessionFactory的作用,以及SqlSession和MappedStatement的使用。最后介绍了MapperRegistry、MapperProxy和MapperMethod等类的作用。
延伸解读
Configuration 的单例特性与生命周期
文章指出 Configuration 类本身并非单例,而是通过 SqlSessionFactoryBuilder 在构建阶段确保整个应用中只有一个 Configuration 实例。一旦 SqlSessionFactory 创建完成,SqlSessionFactoryBuilder 的任务即结束,通常采取即用即抛的原则。这种设计使得 Configuration 在 SqlSessionFactory 的生命周期内保持单例,从而统一管理全局配置和映射资源。
Mapper 方法调用的动态代理机制
文章通过 MapperProxy 的 invoke 方法展示了 Mapper 接口方法的执行封装。在 invoke 中,首先判断方法是否来自 Object 类,若是则直接调用;否则通过 sqlSession.selectOne 执行。后续引入 MapperMethod 类,在初始化时从 methodCache 查询,不存在则构建,并利用建造者模式构建 SqlCommand,根据接口名和方法名从 Configuration 获取 MappedStatement,最终区分 CRUD 操作执行。
XML 配置解析与 MappedStatement 构建
文章详细描述了使用 dom4j 解析 XML 配置的过程:从主配置文件读取 mappers 元素,遍历每个 mapper 资源,再解析其中的 select 等节点,提取 id、parameterType、resultType 和 SQL 语句。对于 SQL 中的 #{} 占位符,通过正则匹配替换为 ?,并将参数名存入 Map。最终构建 MappedStatement 对象并注册到 Configuration 中,为后续 SQL 执行提供映射信息。
Q&A
Mybatis中Mapper xml的注册流程是怎样的?
Mapper xml的注册流程包括解析XML文件,封装Mapper文件中的方法操作,并将其保存到实体中。
Configuration类在Mybatis中有什么作用?
Configuration类在Mybatis中存储全局装备信息和管理映射资源,包括数据库连接信息和SQL映射。
SqlSessionFactoryBuilder的作用是什么?
SqlSessionFactoryBuilder用于从装备信息构建SqlSessionFactory实例,确保整个使用中只有一个Configuration实例。
如何解析Mybatis的XML配置文件?
通过使用SAXReader读取XML文件,提取SQL映射信息并打印相关内容。
MapperProxy和MapperMethod在Mybatis中有什么作用?
MapperProxy负责动态代理Mapper接口,MapperMethod封装了方法对应的SQL执行逻辑。
Mybatis中如何处理SQL语句的执行?
通过SqlSession的selectOne方法执行SQL语句,MapperMethod负责管理SQL的执行逻辑。