您所在的位置:星座分析>星座分析>农历

简述mybatis的工作原理 mybatis的工作原理和操作步骤

时间:2024-05-27 13:58:29 浏览量:

一篇好的文章需要好好的打磨,你现在浏览的文章是一篇关于简述mybatis的工作原理 mybatis的工作原理和操作步骤的文章,本文对文章简述mybatis的工作原理 mybatis的工作原理和操作步骤好好的分析和解答,希望你能喜欢,只有你喜欢的内容存在,只有你来光临,我们才能继续前行。d3y星座分析

简述mybatis的工作原理 mybatis的工作原理和操作步骤

mybatis原理

MyBatis 的工作原理:读取 MyBatis 配置文件、加载映射文件、构造会话工厂、创建会话对象、Executor 执行器、输入参数映射、输出结果映射。d3y星座分析

1、读取 MyBatis 配置文件:d3y星座分析

mybatis-config.xml 为 MyBatis 的全局配置文件,配置了 MyBatis 的运行环境等信息,例如数据库连接信息。d3y星座分析

2、加载映射文件:d3y星座分析

映射文件即 SQL 映射文件,该文件中配置了操作数据库的 SQL 语句,需要在 MyBatis 配置文件 mybatis-config.xml 中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。d3y星座分析

3、构造会话工厂:d3y星座分析

通过 MyBatis 的环境等配置信息构建会话工厂 SqlSessionFactory。d3y星座分析

4、创建会话对象:d3y星座分析

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

5、Executor 执行器:d3y星座分析

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

6、MappedStatement 对象:d3y星座分析

在 Executor 接口的执行方法中有一个 MappedStatement 类型的参数,该参数是对映射信息的封装,用于存储要映射的 SQL 语句的 id、参数等信息。d3y星座分析

7、输入参数映射:d3y星座分析

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

8、输出结果映射:d3y星座分析

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

mybatis原理

1、API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵、数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。d3y星座分析

2、数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。d3y星座分析

3、基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。

Mybatis 执行流程浅析(附深度文章推荐 & 面试题集锦)_百度...

假如我们要自己设计一个半自动的仿 Mybatis 框架,有哪些环节是必不可少的呢?思考再三,必然有以下环节:d3y星座分析

如果仅考虑这三点的话,其实实现一个简单的 ORM 框架就很容易了,再附加一些反射和正则表达式等等就可以搞定了.d3y星座分析

那如果去参考 Mybatis,我们来看看它的几个环节是如何设计的:d3y星座分析

其实大致思路一样,需要一个数据结构去存储全部的变量,通过接口代理的方式调用 Sqlsession 里面内置的方法,`` 不同的是真正的执行者又加了一层,是 Executor ``,再通过原始 JDBC 返回数据给调用者,当然, 真正的 Mybatis 包含了众多的设计模式以及数据源,缓存,动态 SQL,数据库事务,延迟加载处理 等等d3y星座分析

>d3y星座分析

这里有个小点需要强调下,真正的执行者是`` Executor ``,我们每次在使用以下代码:d3y星座分析

通过查看源码也可以看到,SqlSession 接口的默认实现类是`` DefaultSqlSession ``d3y星座分析

而方法真正的执行,如 selectList 方法:d3y星座分析

>d3y星座分析

#{} 是预编译处理,${}是字符串替换。Mybatis 在处理 #{}时,会将 sql 中的 #{}替换为?号,调用 PreparedStatement 的d3y星座分析

set 方法来赋值;d3y星座分析

Mybatis 在处理时,就是把时,就是把{}替换成变量的值。d3y星座分析

使用 #{}可以有效的防止 SQL 注入,提高系统安全性d3y星座分析

PS:mybatis 执行的本质还是 SQL,因此回归本质可以简单理解为一个对于 PreparedStatement ,一个对应 Statementd3y星座分析

Dao 接口即 Mapper 接口,接口的全限名,就是映射文件中的 namespace 的值;接口的方法名,就是映射文件中 Mapper 的 Statement 的 id 值;接口方法内的参数,就是传递给 sql 的参数d3y星座分析

`` 实现原理: ` Mapper接口的工作原理是JDK动态代理,mybatis会对每一个mapper代理生成一个mapperProxy对象,代理对象会拦截接口方法,转而自动对应到sqlsession上,最终由 ` Executor ``执行d3y星座分析

`` 参数不同,方法不可重载 ``,为什么?d3y星座分析

上文说到 mybatis 有一个环节是解析 XML 文件或者解析接口,它会去构建一个叫做 MapperStatement 对象去存储 mapper 的相关信息,每一个 dao 接口方法在执行的时候到底是如何定位找到对应的 MapperStatement 的呢?d3y星座分析

源码逻辑图:d3y星座分析

以上内容是小编精心整理的关于简述mybatis的工作原理 mybatis的工作原理和操作步骤的精彩内容,好的文章需要你的分享,喜欢简述mybatis的工作原理 mybatis的工作原理和操作步骤这篇精彩文章的,请您经常光顾吧!d3y星座分析

本文标题:简述mybatis的工作原理 mybatis的工作原理和操作步骤

本文链接:http://www.xzfx123.com/article/118793.html

上一篇:博物馆工作人员是否属于公务员 博物馆工作一般工资多少

下一篇:更多农历

网友留言

(网友评论仅供其表达个人看法,并不表明本站立场)

猜你喜欢
农历相关文章
更多农历文章
喜欢农历就经常来哦!