MyBatis 的核心组件和执行流程?
MyBatis 面试题发布于
一、核心组件
- SqlSessionFactory:SqlSession 工厂,重量级,全局一个。
- SqlSession:与数据库交互的会话,非线程安全,每次操作创建。
- Executor:执行器,负责 SQL 执行和缓存维护。
- StatementHandler:处理 JDBC Statement。
- ParameterHandler:参数处理。
- ResultSetHandler:结果集映射。
二、执行流程
- 读取配置文件(mybatis-config.xml)和 Mapper 映射文件,构建 Configuration。
- SqlSessionFactoryBuilder 创建 SqlSessionFactory。
- openSession() 获取 SqlSession。
- SqlSession 获取 Mapper 代理对象(JDK 动态代理)。
- 调用 Mapper 方法,最终通过 Executor 执行 SQL,返回结果。
三、插件机制
基于动态代理,可拦截四大对象(Executor、StatementHandler、ParameterHandler、ResultSetHandler),实现分页、监控等。