mybatis 架构概览

架构图
在这里插入图片描述
接口层
接口层是MyBatis提供给开发人员的一套API.主要使用SqlSession接口.通过
SqlSession接口和Mapper接口.开发人员,可以通知MyBatis框架调用那一条SQL命令
以及SQL命令关联参数.
SqlSession接口使用方式

public void start() throws IOException{
	InputStream is=Resources.getResourceAsStream("myBatis-config.xml");
	SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
	session=factory.openSession();
	session.insert("InsertDept_Sql",dept)
}

数据处理层
数据处理层是MyBatis框架内部的核心实现.来完成对映射文件的解析与数据处理:
(1)参数解析与参数绑定
(2)SQL解析
(3)结果集映射解析与结果集映射处理
支撑层
支撑层用来完成MyBaits与数据库基本连接方式以及SQL命令与配置文件对应.主要负
责:
(1)MyBatis与数据库连接方式管理
(2)MyBatis对事务管理方式
(3)配置文件加载
(4)MyBatis查询缓存管理
架构流程图
在这里插入图片描述
说明:

  1. mybatis配置文件
    SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis
    的运行环境等信息。
    Mapper.xml,此文件作为mybatis的sql映射文件,文件中配置了操作数据
    库的sql语句。此文件需要在SqlMapConfig.xml中加载。
  2. SqlSessionFactory
    通过mybatis环境等配置信息构造SqlSessionFactory,即会话工厂。
  3. sqlSession
    通过会话工厂创建sqlSession即会话,程序员通过sqlsession会话接口对数据库
    进行增删改查操作。
  4. Executor执行器
    mybatis底层自定义了Executor执行器接口来具体操作数据库,Executor接口有
    两个实现,一个是基本执行器(默认)、一个是缓存执行器,sqlsession底层是
    通过executor接口操作数据库的。
  5. Mapped Statement
    它也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息
    等。mapper.xml文件中一个select\insert\update\delete标签对应一个
    Mapped Statement对象,select\insert\update\delete标签的id即是Mapped
    statement的id。
    Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、
    pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql
    中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
    Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、
    pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象
    中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
    调用流程图
    在这里插入图片描述
    SqlSession
    接收开发人员提供Statement Id 和参数.并返回操作结果
    Executor
    MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
    StatementHandler
    封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将
    Statement结果集转换成List集合。
    ParameterHandler
    负责对用户传递的参数转换成JDBC Statement 所需要的参数
    ResultSetHandler
    负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
    TypeHandler
    负责java数据类型和jdbc数据类型之间的映射和转换
    MappedStatement
    维护了一条<select|update|delete|insert>节点的封装
    SqlSource
    负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到
    BoundSql对象中,并返回BoundSql表示动态生成的SQL语句以及相应的参数信息
    Configuration
    MyBatis所有的配置信息都维持在Configuration对象之中。
    mapper代理执行原理
    在这里插入图片描述
发布了9 篇原创文章 · 获赞 1 · 访问量 129

猜你喜欢

转载自blog.csdn.net/qq_33358408/article/details/103910980