• 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等对象完成具体的数据库操作和事务,缓存等功能。

  • 相关阅读:
    Linux防火墙之iptables(下)
    Java逻辑控制
    Xilinx XC7Z020双核ARM+FPGA开发板试用合集——体验ZYNQ下linux
    小程序 BUG 记录
    C float Memory Representation
    低功耗局域网通信硬件之lora——sx1262-sx1276硬件设计开发
    STM32电源名词解析
    解决Opencv dnn模块无法使用onnx模型的问题(将onnx的动态输入改成静态)
    基础 | NIO - [Selector]
    wy的leetcode刷题记录_Day56
  • 原文地址:https://blog.csdn.net/m0_68402491/article/details/139394049