首页 > 其他分享 >Mybatis的工作原理

Mybatis的工作原理

时间:2023-07-28 11:32:15浏览次数:36  
标签:MaBatis 映射 接口 工作 SqlSession 参数 SQL Mybatis 原理

1、读取Mabatis配置文件

mabatis-config.xml为MyBatis的全局配置文件,配置了MaBatis的运行环境等信息,例如数据库连接信息。

2、加载映射文件

加载通过Mapper.xml配置或者注解的SQL映射,该文件中配置了操作数据库的SQL语句,需要在MaBatis配置文件mabatis-config.xml中加载。

3、构造会话工厂:SqlSessionFactory

通过Mabatis的环境等配置信息构建会话工厂SqlSessionFactory。

4、创建会话对象:SqlSession

由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

5、Executor执行器

MaBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。

6、MappedStatement对象

在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。也就是Mapper.xml文件配置的最终是MappedStatement实体类进行对应。

7、输入参数映射

输入参数类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输入参数映射过程类似于JDBC对preparedStatement对象设置参数的过程。

8、输出结果映射

输出结果类型是可以Map、List等集合类型,也可以是基本数据类型和POJO类型,输出结果映射过程类似于JDBC对结果集的解析过程。

MaBatis的核心组件

MyBatis的核心组件分为4个部分

1、SqlSessionFactoryBuilder(构造器)

会根据配置或者代码来生成SqlSessionFactory,采用的是分步构建的Builder模式。

2、SqlSessionFactory(工厂接口)

依靠它来生成SqlSession,使用的是工厂模式。

3、SqlSession(会话)

一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。在现有的技术中,一般会让器在业务逻辑代码中“消失”,而使用的是MaBatis提供的SQL Mapper接口编程技术,它能提高代码的可读性和可维护性。

4、SQLMapper(映射器)

MaBatis新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给出对应的SQL和映射规则,它负责发送SQL去执行,并返回结果。

标签:MaBatis,映射,接口,工作,SqlSession,参数,SQL,Mybatis,原理
From: https://blog.51cto.com/u_11315052/6880004

相关文章

  • 领略MyBatis-Flex的魅力
    一、MyBatis-Flex是什么MyBatis-Flex是一个优雅的MyBatis增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用Mybaits-Flex链接任何数据库,其内置的QueryWrapper帮助我们极大的减少了SQL编写的工作的同时,减少出错的可能性。总而言之,MyBatis-Flex能够极......
  • 蒙特卡洛积分-重要性采样原理及其应用
    我自己是数学菜逼,所以我在学习数学之类的内容的时候,我基本上会去找视频看,虽然视频比较耗时间,但数学真的很难,没办法,菜逼一个。好在在b站上找到一位数学老师有这个视频讲解,真的救命呀!!!放下视频链接https://www.bilibili.com/video/BV17D4y1o7J2?p=1&vd_source=4451d7e9f1ccf3c1318002......
  • 平常工作中常用的linux指令
    目录rsyncscpfindlocategrep-rn"123"pwd显示当前路径rm-rfXXXdu-h显示占用磁盘大小ln软链接whichwhereisrsyncrsync-avp--exclude"*.bin"--exclude"*raw.jpg"/data/[email protected]:/admin/data_1/project/send/scpscp-......
  • 超越 Mybatis-Plus?超强 ORM 框架横空出世!
    点击“终码一生”,关注,置顶公众号每日技术干货,第一时间送达!1、MyBatis-Flex是什么MyBatis-Flex是一个优雅的MyBatis增强框架,它非常轻量、同时拥有极高的性能与灵活性。我们可以轻松的使用Mybaits-Flex链接任何数据库,其内置的QueryWrapper^亮点帮助我们极大的减少了SQL编写......
  • HBase Compaction 原理与线上调优实践
    作者:vivo互联网存储技术团队-HangZhengbo本文对HBaseCompaction的原理、流程以及限流的策略进行了详细的介绍,列举了几个线上进行调优的案例,最后对Compaction的相关参数进行了总结。一、Compaction介绍HBase是基于一种LSM-Tree(Log-StructuredMergeTree)体系架构的存储模......
  • 工作日记0
    "你知道的,在工作里,领导不会顾及我们的死活""最讨厌听到的是,兄弟们加油,今天晚上开个会,怎么了,你上班时间是死了吗""就很搞笑,我在合同里签的黑纸白字的下班时间下班,吃了饭还得回来,休息和外出还得和领导请假""我就说这煞笔领导,以后肯定高开不了,只谈理想,不谈钱,谈尼玛理......
  • Redis 主从同步原理
    一、什么是主从同步?主从同步,就是将数据冗余备份,主库(Master)将自己库中的数据,同步给从库(Slave)。从库可以一个,也可以多个,如图所示:二、为什么需要主从同步?Redis虽然有RDB和AOF持久化技术,可以在服务器重启的情况下保证内存中的数据不会丢失(但不意味着数据不丢,重启的时候还是......
  • Mybatis-plus学习
    简介:MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。架包依赖<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version></dependency><dependency> <groupId>org.......
  • linux日志轮替:日志轮替配置文件 | 设置日志轮替 | 日志轮替原理
    摘要介绍linux日志轮替logrotate原理及操作一、linux日志轮替日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除目的是防止一个文件保存的日志太多:定时将日志文件的内容做好备份二、日志轮替文件命名centos7使......
  • 电路板偶尔不工作的情况RC07
    我用的是一个24V转12V,12V输出端电压在11.5V左右。最近的两套RC07的板子,有一个接收器遇到一个奇怪的问题:12V供电,打开电源,有时候板子会没反应(三个灯都不亮,就像是没有通电),重复断电上电,又有可能会恢复正常。另一个接收器没有这个现象。平均10次出现2~3次有时候会连续出现。不亮的时候......