《MyBatis的运行原理》

一.MyBatis是什么?

        MyBatis 是⼀个开源、轻量级的数据持久化框架,是 JDBC Hibernate 的替代⽅案,MyBatis 内部封装了 JDBC ,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身

二.MyBatis执行流程

1.MyBatis与JDBC

        想要学习了解MyBatis,我们首先需要从JDBC入手并立足于JDBC,才能深入的理解MyBatis的工作原理以及核心流程。我们知道,JDBC有四个核心对象:
        (1)DriverManager,用于注册数据库连接
        (2)Connection,与数据库连接对象
        (3)Statement/PrepareStatement,操作数据库SQL语句的对象
        (4)ResultSet,结果集或一张虚拟表

而MyBatis也有四大核心对象:
        (1)SqlSession对象,该对象中包含了执行SQL语句的所有方法。类似于JDBC里面的Connection。
        (2)Executor接口,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。类似于JDBC里面的Statement/PrepareStatement。
        (3)MappedStatement对象,该对象是对映射SQL的封装,用于存储要映射的SQL语句的id、参数等信息。
        (4)ResultHandler对象,用于对返回的结果进行处理,最终得到自己想要的数据格式或类型。可以自定义返回类型。

 2.执行流程:

        MyBatis的工作原理图:

《MyBatis的运行原理》_第1张图片

代码:

public class Test01 {
    public static void main(String[] args) throws Exception{
        //1.编写mybatis主配置文件的路径
        String path="mybatis_config.xml";
        //2.读取配置文件创建流对象
        InputStream is = Resources.getResourceAsStream(path);
        //3.实例化SqlSessionFactoryBuilder工厂构造对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //4.通过构造对象的方法加载mybatis主配置文件创建会话工厂sqlSessionFactory
        SqlSessionFactory SqlSessionFactory= sqlSessionFactoryBuilder.build(is);
        //5.获取会话对象
        SqlSession session= SqlSessionFactory.openSession();
        //6.加载映射器,创建Dao接口的代理对象
        StudentMapper dao=session.getMapper(StudentMapper.class);
        List list=dao.findAll();
        //7.打印
        for(Student stu:list){
            System.out.println("-------------");
            System.out.println(stu);
        }
        //8.关闭会话
        session.close();
        is.close();
    }
}

结合上述流程图和代码,简单总结如下文所述:

(1)读取MyBatis的配置文件。mybatis_config.xml为MyBatis的核心配置文件,用于配置全局环境设置,数据库连接,引入映射文件等信息;

(2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis_config.xml中加载。mybatis_config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表;

(3)构造会话工厂。通过SqlSessionFactoryBuilder构建SqlSessionFactory会话工厂;

(4)创建会话对象。由会话工厂SqlSessionFactory的openSession()方法创建SqlSession对象;

(5)加载映射器,创建Dao接口的代理对象;

(6)通过对象调用接口中的方法,实现SQL语句的执行。

在学习MyBatis时,我们需要知道MyBatis 内部封装了 JDBC ,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,所以我们在使用MyBatis进行开发时,只需要实现上述 6 步即可,余下的逻辑框架会帮我们自动实现,这也是在一开始就提到的,使用MyBatis,开发者只需要关注 SQL 语句本身

三.总结

MyBatis作为一款优秀的持久层框架,其设计精巧、扩展性强,理解其运行原理对于高效使用和问题排查至关重要。希望本文能够帮助读者更好地理解和使用MyBatis框架。

你可能感兴趣的:(《MyBatis的运行原理》)