mybatis源码系列第二篇-Mybatis的架构与关键组件

引子

诸葛亮读书"观其大略,不求甚解“,嘿嘿,我感觉刚开始学习知识也得有个大略,暂时不明白细节没有关系,mybatis 说白了就是对jdbc的封装,
jdbc 先来复习下吧,嘿嘿。

public class JdbcTest {
     
  public static void main(String[] args) throws SQLException, ClassNotFoundException {
     
    //1获取数据库连接
    String url = "jdbc:mysql://localhost:3306/ms?useCursorFetch=true";
    String username = "root";
    String password = "root";
    Class.forName("com.mysql.jdbc.Driver");
    Connection connection = DriverManager.getConnection(url, username, password);
    
    //2 创建statement
    PreparedStatement preparedStatement =  connection.prepareStatement("select  * from blog where id > ?");
    
    //3 设置参数
    preparedStatement.setInt(1,1);
    
    //4 执行sql
    ResultSet resultSet = preparedStatement.executeQuery();
    
    //5 处理结果集
    while (resultSet.next()){
     
      
      int id = resultSet.getInt("id");
      String  title = resultSet.getString("title");
      String  content = resultSet.getString("content");
      
      Blog blog = new Blog();
      blog.setId(id);
      blog.setTitle(title);
      blog.setContent(content);
      System.out.println(blog);
    }
  }
}

jdbc 无非就是
1 获取数据库连接,
2 创建statement,
3 设置参数,
4 执行sql
5 处理结果集
我们使用mybatis的时候, 只需要定义一个sql(可能有参数),然后告诉mybatis参数是什么,以及结果要封装成什么样子,mybatis就可以操作数据库了,搞清楚mybatis是如何封装jdbc的,也就搞清楚mybatis的原理了。

mybatis架构

mybatis源码系列第二篇-Mybatis的架构与关键组件_第1张图片
功能架构讲解:
我们把Mybatis的功能架构分为三层:

(1)接口层SqlSession:使用MyBatis的接口。通过这个接口,可以执行命令、获取Mapper代理和管理事务。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。

(2)数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等,通俗点说就是对JDBC的封装。

(3)基础层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。

关键类(接口)介绍

Configuration mybatis会把全局配置以及mapper配置文件都封装到这个类里面。

SqlSessionFactory SqlSession的工厂接口

Session SqlSession 是一个面向用户(程序员)的接口。SqlSession 中提
供了很多操作数据库的方法

MappedStatement sql底层封装对象
作用:对操作数据库存储封装,包括 sql 语句、输入输出参数

Executor 执行器是一个接口(基本执行器、缓存执行器)
作用:SqlSession 内部通过执行器操作数据库

ParameterHandler 参数处理器,负责设置PreparedStatement的参数
StatementHandler Statemen处理器,负责操作 Statement 对象来操作数据库
ResultSetHandler 结果集封装处理器,负责把结果封装成需要的java对象

执行流程图

mybatis源码系列第二篇-Mybatis的架构与关键组件_第2张图片
上面这张图是网上找的,我感觉把mybatis执行的核心流程画的挺清楚的,弄清楚这张图每个类的细节,就基本清楚了mybatis的原理了。

嘿嘿,如果有什么问题,欢迎大家指正,下一篇介绍SqlSession的创建过程。

你可能感兴趣的:(mybatis,源码,orm,mysql,springmvc)