• MyBatis核心对象


    MyBatis核心类对象主要有俩个:

    1:对相关配置文件信息进行封装的Configuration对象

    2:用来执行数据库操作的Executor对象。

    核心对象----存储类对象Configuration

    Configuration对象主要有三个作用:

    1:封装MyBatis配置文件内容(XPathParser(MyBatis基于XPath封装的xml解析工具类)进行xml文件解析):

    2:封装Mapper文件相关内容:

    MappedStatement对象:

    MyBatis解析Mapper.xml配置文件映射成MappedStatement对象,每一个id标签对应一个MappedStatement。

    MappedStatement部分源码:

    MappedStatement使用BoundSql封装sql语句:

    3:创建其它相关对象:

    StatementHandler:

    MyBatis进行数据库操作的真正核心,封装了JDBC的statement。

    既然StatementHandler负责数据库操作,那么为什么还要封装Executor对象?

    因为StatementHandler只是将Executor最主要的功能:增删改查等基本功能,而Executor还有其它作用

    ParmeterHandler

    封装对参数的处理操作

    ResultSetHandler

    封装对结果集的处理操作

    TypeHandler

    负责数据库类型和Java之间对应的类型转换

    Configuration对象创建时机:

    创建SqlSessionFactory时通过XPathParser解析xml配置文件,进而创建Configuration,通过Configuration作为参数创建SqlSessionFactory。

    核心对象-----操作类对象Executor

    核心实现类:

    MyBatis默认使用SimpleExecuter。

    Executor的最终还是通过调用Configuration创建的各种Handler实现其功能。

    Executor的创建时机

    通过SqlSessionFactory创建SqlSession时创建Executor:

    总结:

            我们在创建SqlSessionFactory时通过xml文件解析技术将Mybatis配置文件映射成Configuration对象,将Mapper.xml文件映射成MappedStatement配置文件同时封装进Configuration对象。同时Configuration对象创建StatementHandler等底层操作工具类。

            通过SqlSessionFactory创建SqlSession时创建出Executor操作类,Executor通过StatementHandler等对象完成具体的数据库操作和事务,缓存等功能。

  • 相关阅读:
    毕业前写了20万行代码,让我从成为同学眼里的面霸
    vue table组件真对某一列或者整个table做模糊匹配
    1-Redis架构设计到使用场景-四种部署运行模式(上)
    DS:二叉树的链式存储及遍历
    【电源专题】线性稳压器基础(线性稳压器是哪里线性了?)
    记一个SGI空间配置器的设置OOM处理函数的用法
    JS 流行框架(二):Express
    10、JavaWeb启程——JSP
    MySQL数据库分库分表
    曼昆 宏观经济学 笔记
  • 原文地址:https://blog.csdn.net/m0_68402491/article/details/139394049