Mybatis的工作原理和执行流程

Mybatis的工作原理和执行流程

什么是Mybatis?

​ MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

一、Mybatis工作原理

我们知道,JDBC有四个核心对象

  1. DriverManager,用于注册数据库连接
  2. Connection,与数据库连接对象
  3. Statement/PrepareStatement,操作数据库SQL语句的对象
  4. ResultSet,结果集或一张虚拟表

而MyBatis也有四大核心对象:

  1. SqlSession对象,该对象中包含了执行SQL语句的所有方法;类似于JDBC里面的Connection

    SqlSession下的四大对象

    • Executor:执行器,由它统一调度其他三个对象来执行对应的SQL;

    • StatementHandler:使用数据库的Statement执行操作;

    • ParameterHandler:用于SQL对参数的处理;

    • ResultHandler:进行最后数据集的封装返回处理;

  2. Executor接口,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。类似于JDBC里面的Statement/PrepareStatement。

  3. MappedStatement对象,该对象是对映射SQL的封装,用于存储要映射的SQL语句的id、参数等信息。

  4. ResultHandler对象,用于对返回的结果进行处理,最终得到自己想要的数据格式或类型。可以自定义返回类型。

Mybatis的工作原理和执行流程_第1张图片

二、Mybatis执行流程

如上图:

1.读取Mybatis配置文件,通过Resources获取一个inputStream字节流对象

String resource="SqlMapperConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);

2.通过SqlSessionFactoryBuilder建造者创建一个sessionFactory工厂

SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

3.sessionFactory可以生成一个SqlSession对象

SqlSession session = sessionFactory.openSession();

4.session可以执行sql方法
Mybatis的工作原理和执行流程_第2张图片

你可能感兴趣的:(mybatis,spring,sql,intellij-idea,dba)