美文网首页一些收藏
MyBatis原理(一)——概述

MyBatis原理(一)——概述

作者: Lnstark | 来源:发表于2021-11-30 23:16 被阅读0次

    此系列为鲁班大叔的MyBatis源码的学习总结。
    我调试的MyBatis版本为3.5.7

    一、JDBC执行过程

    先回顾一下JDBC执行过程:

    /** 第一步: 获取连接 */
    Connection connection = DriverManager.getConnection(JDBC.URL, JDBC.USERNAME, JDBC.PASSWORD);
    /** 第二步: 预编译SQL */
    PreparedStatement statement = connection.prepareStatement("select * from  users ");
    /** 第三步: 执行查询 */
    ResultSet resultSet = statement.executeQuery();
    /** 第四步: 读取结果 */
    readResultSet(resultSet);
    

    分为获取连接、预编译SQL,执行查询和读取结果4步。

    二、mybatis执行过程

    • 加载并解析配置文件到Configuration中
    • 创建DefaultSqlSessionFactory,创建SqlSession
    • 通过代理模式创建MapperProxy
    • 如果开启了二级缓存,那么执行CachingExecutor
    • 否则执行BaseExecutor

    三、MyBatis核心组件

    • 执行器(Executor)

    执行器的核心功能包括:缓存维护、事务操作,query和update操作,具体的SQL语句操作交给StatementHandler来处理。

    • 会话(SqlSession)

    为用户提供增删改查、事务的提交以及会话关闭等功能。它里面包含一个执行器,所有的操作都交给执行器处理。

    • SQL处理器(StatementHandler)

      它会执行上面说的JDBC的操作像statement的创建,预编译、参数的设置、SQL的执行以及结果的处理等。
      • 设置参数:ParameterHandler
      • 结果处理:ResultSetHandler
    • Mapper代理(MapperProxy)

    InvocationHandler实现类,MapperProxyFactory通过JDK动态代理生成Mapper的实现类。

    参考资料

    B站——MyBatis源码解析大合集
    源码阅读网

    相关文章

      网友评论

        本文标题:MyBatis原理(一)——概述

        本文链接:https://www.haomeiwen.com/subject/rkrxnltx.html