由以上图可以看出,mybatis框架在操作数据库时大致经过了8个步骤。对这8个步骤分析如下:

1)读取mybatis配置文件mybatis-config.xml。mybatis-config.xml配置文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息,其中主要内容是获取数据库连接。

2)加载映射文件mapper.xml。mapper.xml文件即SQL映射文件,该文件中配置了操作数据库的sql语句,需要在mybatis-config.xml中加载才能执行。mybatis-config.xml可以加载多个配置文件,每个配置文件对应数据库中的一张表。

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

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

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

6)在Executor接口的方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等。Mapper.xml文件中的一个SQL对应一个MappedStatement对象,SQL的id即是MappedStatement的id。

7)输入映射参数。在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义(可以定义为Map、List类型、基本类型和POJO类型),Executor执行器会通过MappedStatement对象在执行SQL前,将输入的java对象映射到SQL语句中。这里对输入参数的映射过程就类似于JDBC编程中对preparedStatement对象设置参数的过程。

8)输出结果映射。在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义(可以定义为Map、List类型、基本类型、POJO类型),Executor执行器会通过MappedStatement对象在执行SQL语句后,将输出结果映射到java对象中。这种将输出结果映射到java对象的过程就类似于JDBC编程中对结果的解析处理过程。

以上就是mybatis工作的基本原理。

ORM映射框架常见的有两种,即hibernate和mybatis,他们的区别如下:

hibernate:它是一个全表映射的框架。通常开发者只需要定义好持久化对象到数据库表的映射关系就可以通过hibernate提供的方法完成持久层的操作了,开发者并不需要熟练的掌握sql语句的编写,hibernate会根据指定的存储逻辑,自动的生成对应的sql并调用JDBC接口来执行,所以hibernate的开发效率比mybatis稍高些。

但hibernate也有缺点,例如:它在多表关联时对SQL查询的支持较差、更新数据时要发送所有的字段、不支持存储过程、不能通过优化SQL来优化性能等等。

这些问题导致hibernate只适合在场景不太复杂且对性能要求不高的项目中使用。

mybatis:它是一个半自动映射的框架。这里的所谓半自动是相对于hibernate的全表映射而言的,mybatis需要手动匹配提供POJO、SQL和映射关系,而hibernate只需提供POJO和映射关系即可。与hibernate相比,虽然使用mybatis需要手动编写SQL,但是mybatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等优点。

因此mybatis常用于比较复杂和需要优化性能的项目,互联网项目中通常都使用mybatis。

java中mybatis原理,mybatis的工作原理相关推荐

  1. Java中的Annotation(2)----Annotation工作原理

    上一篇文章已经介绍了如何使用JDK的三个标准Annotation,本文将介绍Annotation的原理,以及如何自定义Annotation,并利用Annotation来完成一些实际的功能. 定义Ann ...

  2. 【Java面试题】21 Java中的异常处理机制的简单原理和应用。

    [Java面试题]21 Java中的异常处理机制的简单原理和应用. 参考文章: (1)[Java面试题]21 Java中的异常处理机制的简单原理和应用. (2)https://www.cnblogs. ...

  3. 计算机输入输出设备说课稿,信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)...

    <信息技术七年级西交大版 第三节 计算机系统的组成与工作原理计算机系统及工作原理说课稿 (共15张PPT)>由会员分享,可在线阅读,更多相关<信息技术七年级西交大版 第三节 计算机系 ...

  4. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  5. Java中的注解是如何工作的

    转载自 Java中的注解是如何工作的? 自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分.开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecate ...

  6. c语言智能插座多线程原理,智能插座原理—智能插座的工作原理是什么

    近年来,物联技术有了一个更高层次的发展,并且物联技术深入到智能家居领域当中,与智能化家电结合,设计制造出很多非常棒的智能电子产品.其中,很多插座厂商也朝着智能化的方向发展,智能插座产生.那么智能插座的 ...

  7. 现在使用计算机器工作原理,计算机显示器工作原理(17页)-原创力文档

    计算机显示器工作原理 计算机显示器工作原理 显示器技术 长宽比和可视区域 多频扫描显示器 显示器连接 显示器的颜色深度 LCD显示器 LCD的功能和特性 CRT显示器 CRT的功能和特性 LCD和CR ...

  8. mybatis 原理_Mybatis的工作原理

    1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactory, ...

  9. MyBatis 核心对象,工作原理及源码解读

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) Mybatis工作原理 InputStream inputStream = Resources.getResourceAsStream(reso ...

  10. MyBatis核心流程以及工作原理

    MyBatis核心对象 根据以下这四大核心对象,我们就能理清MyBatis的工作原理. SqlSession对象,该对象中包含了执行SQL语句的所有方法.类似于JDBC里面的Connection. E ...

最新文章

  1. 这10项创新技术正在引领零售业数字化转型
  2. 计算机cad论文参考文献,Auto CAD在计算机绘制矿图中的应用探索
  3. java range(10)_Java Year range()用法及代码示例
  4. 位操作——整数用位存储
  5. 三星系统和鸿蒙系统,又一设备直升鸿蒙系统,现有操作系统被抛弃,和三星的想法一样!...
  6. vaadin_Vaadin和DukeScript中的Hello World
  7. 解决报错:java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>()
  8. android studio 横幅,有关 android studio notification 横幅弹出的功能没有反应
  9. [转载] 使用异步 I/O 大大提高应用程序的性能
  10. 问题 C: 能被3整除吗?
  11. 使用grafana4的alert功能
  12. (Python语法篇)1.Python简介
  13. win10系统优化与防范策略
  14. 请求转发与重定向详解
  15. Hydra暴力破解smb协议(Windows用户名和密码)
  16. python爬虫之JS混淆加密、字体反爬
  17. python人机交互界面
  18. 计算机 保护眼睛 颜色,教你把电脑屏幕设置成可以保护眼睛的颜色
  19. ubuntu18.04环境下为UR3配置MoveIt!运动学插件IKFAST(一)
  20. 基于EasyNVR实现RTSP/Onvif监控摄像头Web无插件化直播监控

热门文章

  1. Java 并发控制实例 (银行问题取钱存钱)
  2. OpenCv学习笔记(中)
  3. 【微前端】1013- 微前端框架 之 single-spa 从入门到精通
  4. Vue后台项目中权限管理
  5. Android开发中仿斗鱼弹框的遮罩背景及额外想法“月亮图”
  6. Workspace的基本结构新增个负一屏
  7. SANGFOR AD初级认证——基础知识
  8. 王思聪为何生气了?难道支付宝是否抢了他的奶酪
  9. ai绘画生成器免费开放,即刻享受创作的乐趣
  10. 电信业务分类目录_2019年5月国内增值电信业务许可情况分析报告