Mybatis工作流程

Mybatis体系结构:

Mybatis的功能架构分为三层:

  1. API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请 求就会调用数据处理层来完成具体的数据处理。
  2. 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调 用的请求完成一次数据库操作。
  3. 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

Mybatis工作流程
1、加载配置
配置有两种方式,一种是XML文件配置,另一种是java代码的注解。Mybatis将sql的配置信息加载成为 一个个的MappedStatement对象(包括了传入参数映射配置,执行事物SQL语句,结果映射配置),将其 存储再内存中。

2、Sql解析
当API接口层接收到调用请求时,会接收传入sql的Id和传入对象(可以是Map,javaBean或者基本数 据类型),Mybatis会根据Sql的的Id查找到相应的的MappedStatement,然后根据传入的参数对象对
MappedStatement对象进行解析,解析后便得到了最终需要执行的Sql语句和参数。

3、Sql执行
将最终得到的Sql和参数拿到数据库进行执行,得到需要的结果。

4、结果映射
将操作得到的数据库的结果按照映射配置进行转换,可以将其转换成HashMap,javaBean 或者基本数据类型,并将最终的结果返回。

Mybatis核心部件

  1. Configuration :MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存 储到该类中
  2. SqlSession :作为MyBatis工作的主要顶层API,表示和数据库交互时的会话,完成必要数据库增删改查功能
  3. Executor :MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护,有他来实现真 正对数据库的操作。
  4. StatementHandler :封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数等
  5. ParameterHandler : 负责对用户传递的参数转换成JDBC Statement 所对应的数据类型
  6. ResultSetHandler : 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
  7. TypeHandler: 负责java数据类型和jdbc数据类型(也可以说是数据表列类型)之间的映射和转换
  8. MappedStatement : 其维护着一条<select | update| delete| insert>节点的封装 (就是我们map.xml中定 义哪些操作)

原文地址:https://www.cnblogs.com/ericz2j/p/11108063.html

时间: 2024-10-08 08:30:47

Mybatis工作流程的相关文章

mybatis工作流程介绍

mybatis通过注解将statement配置起来,再通过java对象和statement中的sql生成待执行的sql,通过mybatis框架执行sql并将结果映射为java对象 mybatis架构图: 解释: 1.mybatis基本配置文件配置了mybatis运行环境信息,包含:数据连接池.数据库事务管理等,映射配置文件配置sql语句,要在基本配置文件中加载 2.通过mybatis环境配置文件构造会话工厂及SqlSessionFactory 3.通过SqlSessionFactory会话工厂创

Mybatis工作原理(九)

mybatis工作流程: (1) SqlSessionFactoryBuilder 从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例. (2) SqlSessionFactory生成SqlSession. (3) SqlSession拿到Mapper对象的代理(通过JDK动态代理生成一个Mapper的代理,代理类实现了我们写的Mapper接口). (4) 通过MapperProxy调用Maper中相应的方法. 1. 构建SqlSessionFactory

MyBatis的几个重要概念和工作流程

MyBatis 几个重要的概念 Mapper 配置: Mapper 配置可以使用基于 XML 的 Mapper 配置文件来实现,也可以使用基于 Java 注解的 MyBatis 注解来实现,甚至可以直接使用 MyBatis 提供的 API 来实现.                                                        Mapper 接口: Mapper 接口是指自行定义的一个数据操做接口,类似于通常所说的 DAO 接口.早期的 Mapper 接口需要自定义

GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流(转载)

最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮助. GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'desc

Struts2工作流程

Struts2是一个非常优秀的MVC框架,它主要通过StrutsPrepareAndExecuteFilter过滤器将Struts2集成到Web应用中的. 基本工作流程: 1.客户端提交一个HttpServletRequest请求(action或JSP页面): 2.请求经过一系列的过滤器(如ActionContextCleanUp,SiteMesh等): 3.Struts2的核心过滤器StrutsPrepareAndExecuteFilter被调用,并询问ActionMapper来决定这个请求是

Laravel 5系列教程二:路由,视图,控制器工作流程

免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇教程我们走了那么长的路,终于把Laravel安装好了,这一篇教程我们就要进入Laravel的神奇世界了,主要是讲解Laravel的Router,Views,Controllers的工作流程,目的也就是让大家明白Laravel在处理一个get请求的时候是如何工作的. 在开始之前,我们首先得将我们的服务器启动起来,如果你使用Laravel的artisan,你可以直接: php artisan

RT-thread finsh工作流程

finsh是RT-Thread的命令行外壳(shell),提供一套供用户在命令行的操作接口,主要用于调试.查看系统信息.在大部分嵌入式系统中,一般开发调试都使用硬件调试器和printf日志打印,在有些情况下,这两种方式并不是那么好用.比如对于RT-Thread这个多线程系统,我们想知道某个时刻系统中的线程运行状态.手动控制系统状态.如果有一个shell,就可以输入命令,直接相应的函数执行获得需要的信息,或者控制程序的行为.这无疑会十分方便. finsh支持两种模式: 1. C语言解释器模式, 为

[Servlet]Servlet的工作流程及注意事项

Servlet工作流程 利用Servlet完成的Web应用的实际工作流程是通过Tomcat服务器发布服务,客户端与服务器端之间的交互遵循Http协议完成的.具体工作流程如下: 客户端浏览器向服务器端发送请求. 服务器端由Tomcat服务器提供的Servlet容器解析接收到的请求. 通过Web应用程序的配置文件web.xml,解析到对应执行的Servlet. Servlet完成客户端发送的请求逻辑,并完成向客户端发送的响应内容. 由Tomcat服务器提供的Servlet容器向客户端浏览器进行响应.

Ajax的工作流程简述

提到Ajax相信我们都不会陌生,不管你是前端开发还是后台数据处理的程序员,ajax的作用就像现在生活中的手机一样,无论是作用还是流程都差不多,这里我们要进行ajax操作后台数据并显示在页面上的话,首先我们这里才用原生态的ajax去实现,第一步要做的就是首先我们得有一个ajax才行,紧接着还得清楚他的工作流程才行啊,下面我就简单谈谈ajax的工作流程.     v作为一个刚接触ajax的信任来说肯定会觉得很神奇,不知道一个小小的ajax竟然有这种强大的功效实现这样复杂的任务,其实不然,当我们除去包