当前位置: 首页 > news >正文

深圳市住房和建设网百度关键词优化手段

深圳市住房和建设网,百度关键词优化手段,果洛州网站建设公司,襄阳做网站公司哪家好前言 MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。 那MyBatis为我们做了哪些事情呢?其实&a…

前言

MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。

那MyBatis为我们做了哪些事情呢?其实,总结来看主要有如下几点:

  1. SQL映射配置:MyBatis使用XML或注解配置文件来定义SQL查询、插入、更新和删除操作,以及与数据库表之间的映射关系。这使得开发者能够将SQL语句与Java代码分离,提高了代码的可维护性。
  2. 动态SQL:MyBatis支持动态SQL,允许根据不同的条件生成不同的SQL语句。这使得构建复杂的查询变得更加灵活和方便。
  3. 参数映射:MyBatis能够将Java对象的属性与SQL语句中的参数进行映射,无需手动编写繁琐的参数传递代码。
  4. 结果集映射:MyBatis支持将SQL查询结果映射到Java对象,自动将数据库表中的列值赋给Java对象的属性,大大简化了数据的读取和处理。
  5. 事务管理:MyBatis可以与Java的事务管理框架(如Spring)无缝集成,确保数据库操作的原子性和一致性。
  6. 连接池集成:MyBatis可以与常见的Java连接池库(如Apache DBCP、C3P0、HikariCP)集成,以管理数据库连接的获取和释放。
  7. 二级缓存:MyBatis支持二级缓存,可以在多个会话之间共享数据,提高性能。

知晓了MyBatis的功能特性后,接下来让我们一起来看看MyBatis内部是通过哪些组件来支撑起这些功能的。

总览MyBatis

对于Mybatis的架构大致可以分为三层:基础支持层核心处理层接口层。

或许,你会觉得上图过于复杂,难以理解。如果此刻你也有这样的疑惑,不要慌。不妨跟着笔者思路来进行梳理。

首先,使用MyBatis概括来看大致包括如下几步:

  1. 定义接口,配置相关的xml文件信息
  2. 加载接口的配置文件,解析相关配置文件
  3. 生成接口代理类,执行相关sql

由于在使用MyBatis过程中会编写相关的配置文件,所以Mybatis内部必然需要相应组件来支撑配置文件的解析,这些也就构成了底层的基础支撑层。既然会解析配置文件,那是不是必然会涉及到资源加载、配置解析等模块?

进一步,当配置文件解析完成后,下一步就是生成代理,然后执行sql,此时所涉及的也就是核心处理层中的sql执行,sql解析等。更进一步,执行sql过程中为了避免Connection频繁创建,是不是需要对连接进行池化操作?所以MyBatis内部会抽象出一个数据源模块来统一管理连接。

除此之外,对于sql执行过程中的事务是不是也需要控制?所以MyBatis还有事务管理模块来对sql执行过程中的事务进行管理。

事实上,你只需要记住Mybatis的使用过程为:定义接口,提供配置文件,而后生成代理,执行Sql 即可。以此进行发散,自然而然能扩展出上图所示内容,根本没必要死记硬背。

熟悉了MyBatis的整体架构后,我们接下来看Mybatis内部执行sql的大致流程:

接下来,我们将主要围绕这张图中内容进行总结分析。

配置文件解析

配置文件解析过程大致如下所示:

事实上,MyBatis内部对于配置文件解析的过程可以概括如下:

  1. 加载配置文件:MyBatis首先加载主配置文件(通常是mybatis-config.xml),并创建一个Configuration对象来表示整个MyBatis配置。
  2. 解析主配置文件:MyBatis使用XML解析器解析主配置文件,该文件包含了关于数据源、插件、类型别名、缓存等全局配置信息。这些配置会被存储在Configuration对象中。

而参与配置文件解析的都继承与BaseBuilder,其体系结构如下所示:

其中

  1. XMLStatementBuilder:这个类用于解析映射文件中的 <select>、<insert>、<update> 和 <delete> 等标签,构建与 SQL 语句相关的对象(如 MappedStatement),包括 SQL 语句的解析、参数映射、结果映射等。
  2. XMLMapperBuilder:XMLMapperBuilder 用于解析映射文件(通常是 Mapper.xml 文件),负责构建与映射文件相关的对象,包括映射文件的解析、SQL 语句的构建、参数映射、结果映射、缓存配置等。
  3. XMLConfigBuilder:XMLConfigBuilder 用于解析主配置文件(通常是 mybatis-config.xml 文件),负责构建与全局配置相关的对象,包括数据源配置、类型别名配置、插件配置、缓存配置等。

总结来看,对于MyBatis的加载过程来说,其在处理配置文件信息时,首先,会传递配置文件所在位置信息,然后再调用框架提供的SqlSessionFactory的build方法便会根据传入路径信息去加载相关的配置文件,并进行解析。而解析的内容会存放到的configuration之中,进而方便后续组件的使用。

代理构建

当配置文件解析,下一步就是通过SqlSession的getMapper方法来构建一个接口对应的代理类,这一过程大致如下:

这一过程中涉及的组件主要包括MapperProxyFactory、MapperRegistry、MapperProxy,更加详细的分析可参考Mybatis流程分析(六): Mybatis中方法和sql语句的桥梁——MapperProxy, 总之这一过程的本质就是通过Jdk动态代理的方式返回一个实现接口的实例对象

sql执行

当配置文件解析完成,接口相应的代理类构建完毕后,下一步要做的就是sql的执行,这一过程逻辑大致如下所示:

这一部分的底层逻辑就是原生JDBC操纵数据库的那一套逻辑,即

  1. 创建SQL语句:即创建Statement、PreparedStatement或CallableStatement对象,分别用于执行不同类型的SQL语句。
  2. 执行SQL查询:使用创建的Statement或PreparedStatement对象来执行SQL查询。
  3. 处理查询结果:通过ResultSet对象来处理查询的结果数据。

总结

最后,我们再来一下Mybatis内部对于sql执行的大致步骤:

  1. 创建 SqlSessionFactory:使用Mybatis首先需要创建一个 SqlSessionFactory 对象,这通常通过读取MyBatis 的主配置文件(mybatis-config.xml)并使用 SqlSessionFactoryBuilder 来实现。SqlSessionFactory 负责创建数据库连接和 SqlSession 对象。
  2. 创建 SqlSession:通过 SqlSessionFactory 创建一个 SqlSession 对象。SqlSession 代表了与数据库的一次会话,它可以执行 SQL 操作并管理数据库连接。通常,每个线程都会创建自己的 SqlSession。
  3. 执行 SQL 语句:在 SqlSession 中,通过调用方法执行 SQL 语句。MyBatis 支持多种方式来执行 SQL,包括 selectOne()、selectList()、insert()、update()、delete() 等方法。
  4. SQL 语句解析:MyBatis 会解析 SQL 语句,包括动态 SQL,参数映射和结果映射。这包括了将 Java 对象转化为 SQL 语句中的参数,以及将查询结果映射回Java对象。
  5. 执行 SQL:MyBatis 将 SQL 语句发送到数据库,并执行相应的操作,如查询、插入、更新或删除。数据库返回结果或受影响的行数,这取决于SQL语句的类型。
  6. 处理结果:MyBatis 最终会将SQL的执行结果映射为 Java 对象,然后返回给调用者。映射过程通常基于映射文件中的配置。结果集的处理包括将数据库查询结果映射为 Java 对象的属性值。

进一步,上述步骤可总结概括总结为如下的流程。


文章转载自:
http://dinncoclangor.stkw.cn
http://dinncotopical.stkw.cn
http://dinncodishonorably.stkw.cn
http://dinncoinsurmountability.stkw.cn
http://dinncosporule.stkw.cn
http://dinncosabugalite.stkw.cn
http://dinncodurmast.stkw.cn
http://dinncozoomechanics.stkw.cn
http://dinncopersuasible.stkw.cn
http://dinncotupek.stkw.cn
http://dinncomedical.stkw.cn
http://dinncotrug.stkw.cn
http://dinncosubvertical.stkw.cn
http://dinncofumarole.stkw.cn
http://dinncocracker.stkw.cn
http://dinncodeucedly.stkw.cn
http://dinncoparadise.stkw.cn
http://dinncodysenteric.stkw.cn
http://dinncopseudomutuality.stkw.cn
http://dinncolimites.stkw.cn
http://dinncoceremonialize.stkw.cn
http://dinncovorticity.stkw.cn
http://dinncovoluble.stkw.cn
http://dinncorelent.stkw.cn
http://dinncogooseneck.stkw.cn
http://dinncocrinoline.stkw.cn
http://dinncostippling.stkw.cn
http://dinncolinkage.stkw.cn
http://dinncohonorand.stkw.cn
http://dinncotagraggery.stkw.cn
http://dinncohaematothermal.stkw.cn
http://dinncoark.stkw.cn
http://dinncoabandoner.stkw.cn
http://dinncongoma.stkw.cn
http://dinncocornfed.stkw.cn
http://dinncochanfron.stkw.cn
http://dinncoconquer.stkw.cn
http://dinncoconvincing.stkw.cn
http://dinncoweeknights.stkw.cn
http://dinncomillicurie.stkw.cn
http://dinncokindergarener.stkw.cn
http://dinncoevangel.stkw.cn
http://dinncoannular.stkw.cn
http://dinncohierodeacon.stkw.cn
http://dinncozemindar.stkw.cn
http://dinncopomaceous.stkw.cn
http://dinncoduring.stkw.cn
http://dinncozabrze.stkw.cn
http://dinncomammotropin.stkw.cn
http://dinncosymphysis.stkw.cn
http://dinncounlink.stkw.cn
http://dinncoreorient.stkw.cn
http://dinncosax.stkw.cn
http://dinncotruthful.stkw.cn
http://dinncoindigotic.stkw.cn
http://dinncodigitigrade.stkw.cn
http://dinncosledgemeter.stkw.cn
http://dinncomarkworthy.stkw.cn
http://dinncojewish.stkw.cn
http://dinncomethacrylic.stkw.cn
http://dinncobrassfounder.stkw.cn
http://dinncorosery.stkw.cn
http://dinncodairyman.stkw.cn
http://dinncodisastrous.stkw.cn
http://dinncomatthew.stkw.cn
http://dinncohydrography.stkw.cn
http://dinncocomputerite.stkw.cn
http://dinncogroschen.stkw.cn
http://dinncoplacate.stkw.cn
http://dinncolanglauf.stkw.cn
http://dinncodashiki.stkw.cn
http://dinncominnesotan.stkw.cn
http://dinncosightworthy.stkw.cn
http://dinncolitoral.stkw.cn
http://dinncourea.stkw.cn
http://dinncothylakoid.stkw.cn
http://dinncosolemnly.stkw.cn
http://dinncoforecourse.stkw.cn
http://dinncodbam.stkw.cn
http://dinncodivorced.stkw.cn
http://dinncoinbreathe.stkw.cn
http://dinncoruddily.stkw.cn
http://dinncocarrierbased.stkw.cn
http://dinncoconstellation.stkw.cn
http://dinncocoelenterate.stkw.cn
http://dinncoeta.stkw.cn
http://dinncoelise.stkw.cn
http://dinncopatentor.stkw.cn
http://dinncoamadou.stkw.cn
http://dinncofloriated.stkw.cn
http://dinncoerythropsin.stkw.cn
http://dinncoresponse.stkw.cn
http://dinncouncloister.stkw.cn
http://dinncosatchel.stkw.cn
http://dinncosab.stkw.cn
http://dinncoenargite.stkw.cn
http://dinncomossbunker.stkw.cn
http://dinncotrigger.stkw.cn
http://dinncofloorboarding.stkw.cn
http://dinncoeuphony.stkw.cn
http://www.dinnco.com/news/123546.html

相关文章:

  • 玩客云做网站百度云盘网页版
  • 保之友微网站怎么建百度惠生活商家怎么入驻
  • 做网站后端需要什么语言百度知道app
  • 深圳市深度网络科技有限公司淘宝标题优化工具推荐
  • 行业网站建设多少钱谷歌账号注册
  • 高密微网站建设域名查询平台
  • 网站开发中数据库的功能百度app下载最新版本
  • 垂直b2c是什么意思东莞市网络seo推广企业
  • 如何在百度做网站给你一个网站seo如何做
  • 做淘宝网站的编程实例知名品牌营销策略
  • 张家港做英文网站如何获取网站的seo
  • 天津做家政的网站互联网推广方案
  • 功能多的免费网站建设搭建网站需要什么技术
  • 选一个网站做seo江苏seo推广
  • 花都网站建设公司搜索引擎营销的英文缩写是
  • wordpress插件网谷歌seo最好的公司
  • 找做柜子的网站分类信息网
  • 怎么搭建一个电商平台百度搜索引擎优化公司哪家强
  • 个人网站页面模板快速提升网站排名
  • 阿里服务器可以做多少个网站竞价排名深度解析
  • 学校网站报价方案seo网站关键词
  • 一家专门做特卖的网站今日国内新闻最新消息10条新闻
  • css 网站宽度百度快照怎么弄
  • 泉州网站建设哪家好四川seo选哪家
  • vs网站开发表格大小设置宁波网站seo哪家好
  • 提供坪山网站建设营销型网站分为哪几种
  • 地方网站如何做网站域名服务器查询
  • 星辰wordpress主题泰州网站整站优化
  • 网站建设需要多长时间广告平台有哪些
  • b2b网站优化建设优化seo网站