MyBatis

1 阅读1分钟

前言

    • 配置解析
  • Configuration:MyBatis的所有配置信息都存在这个对象中,包括:环境配置、数据源、事务管理器、类型别名、类型处理器、映射器等
  • SqlSessionFactory:通过SqlSessionFactoryBuilder构建,负责创建SqlSession对象,是线程安全的
  • SqlSession:代表和数据库的会话,用于执行SQL命令、提交或回滚事务。
  1. 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语句以及相应的参数信息
  1. 缓存机制
  • 一级缓存:默认开启,作用范围为:同一个SqlSession内
  • 二级缓存:可选开启,作用范围为:同一个命令空间下的所有SqlSession对象,可以跨SqlSession共享缓存数据
  1. 动态SQL
  • MyBatis提供动态SQL能力,可以在XML映射文件中使用if、choose、when、otherwise、where、set
  1. 插件机制
  • 提供了一个插件接口,允许开发者对Mybatis的主要组件(Executor、ParameterHandler、ResultSetHandler、StatementHandler)进行拦截和扩展