简述Mybatis流程和机制

114 阅读1分钟

核心组件:

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 级别)和查询缓存。

缓存可以有效减少数据库访问次数,提高性能,但需要注意缓存的更新策略和失效机制。