前言
-
- 配置解析
- Configuration:MyBatis的所有配置信息都存在这个对象中,包括:环境配置、数据源、事务管理器、类型别名、类型处理器、映射器等
- SqlSessionFactory:通过SqlSessionFactoryBuilder构建,负责创建SqlSession对象,是线程安全的
- SqlSession:代表和数据库的会话,用于执行SQL命令、提交或回滚事务。
- SQL 执行流程
- Executor:执行器是Mybatis调度的核心,负责SQL语句的生成和查询缓存的维护
- StatementHandler:负责封装JDBC Statement操作,设置参数等
- ParameterHandler: 负责将用户传递的参数转换成JDBC Statement所对应的数据类型
- ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合或其他形式
- TypeHandler:负责Java数据类型和JDBC数据类型之间的映射和转换
- MappedStatement:负责维护一条<select|update|delete|insert>节点的封装,包括执行SQL所需的所有信息
- SqlSource:负责根据用户传递的ParamterObject,动态生成SQL语句,将信息封装到BoundSql对象中,并返回。
- BoundSql:表示动态生成的SQL语句以及相应的参数信息
- 缓存机制
- 一级缓存:默认开启,作用范围为:同一个SqlSession内
- 二级缓存:可选开启,作用范围为:同一个命令空间下的所有SqlSession对象,可以跨SqlSession共享缓存数据
- 动态SQL
- MyBatis提供动态SQL能力,可以在XML映射文件中使用if、choose、when、otherwise、where、set
- 插件机制
- 提供了一个插件接口,允许开发者对Mybatis的主要组件(Executor、ParameterHandler、ResultSetHandler、StatementHandler)进行拦截和扩展