码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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等对象完成具体的数据库操作和事务,缓存等功能。

  • 相关阅读:
    每日五道java面试题之spring篇(六)
    苹果ios应用ipa文件签名为什么需要签名才能上架?有没有别的方式替代苹果签名?
    前端周刊第三十二期
    【OpenCV DNN】Flask 视频监控目标检测教程 07
    (附源码)springboot掌上博客系统 毕业设计063131
    Vue3:用vite创建Vue3项目
    Java多线程 用join方法控制线程按顺序执行。
    Windows10系统安装telnet命令
    Java项目:springBoot+Mysql实现的校园二手在线交易平台系统
    Web前端—CSEO、Favicon、小兔鲜儿电商网站顶部设计
  • 原文地址:https://blog.csdn.net/m0_68402491/article/details/139394049
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号