核心组件:
Configuration:配置类,包含了 MyBatis 的所有配置信息,如数据源、映射器、拦截器等。
SqlSessionFactory:工厂类,用于创建 SqlSession 对象,负责管理映射器、缓存等。
SqlSession:会话类,用于执行 SQL 语句和管理事务,每个会话对应一个数据库连接。
MapperProxy:代理类,负责动态生成 Mapper 接口的代理对象。
工作原理:
当应用程序调用 Mapper 接口的方法时,MapperProxy 会拦截这些调用。
MapperProxy 通过 Configuration 获取到对应的 SQL 语句,并通过 Executor 执行 SQL。
Executor 负责管理数据库连接和执行 SQL 语句,将结果映射为 Java 对象。
SqlSessionFactory 负责创建 Configuration 和 Executor,并且负责缓存的管理。
映射文件解析:
MyBatis 使用 XML 文件来定义 SQL 映射关系,映射文件包含 SQL 语句、参数映射、结果映射等信息。
在解析映射文件时,MyBatis 会将 XML 配置转换为对应的 Java 对象,如 MappedStatement、ParameterMapping、ResultMapping 等。
插件机制:
MyBatis 提供了拦截器(Interceptor)接口,可以自定义拦截器来扩展 MyBatis 的功能。
用户可以通过插件机制在 SQL 执行前后做一些额外的处理,比如日志记录、性能监控、缓存等。
缓存机制:
MyBatis 支持多种级别的缓存,包括一级缓存(SqlSession 级别)、二级缓存(SqlSessionFactory 级别)和查询缓存。
缓存可以有效减少数据库访问次数,提高性能,但需要注意缓存的更新策略和失效机制。