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

湖南产品网络推广业务安徽360优化

湖南产品网络推广业务,安徽360优化,拓者设计吧会员有啥区别,wordpress当前网址参数简介 MyBatis是一款优秀的持久层框架,它支持普通SQL查询,存储过程和高级映射。MyBatis通过简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据…

简介

MyBatis是一款优秀的持久层框架,它支持普通SQL查询,存储过程和高级映射。MyBatis通过简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。MyBatis可以自动注册驱动、建立连接、获取SQL执行对象、释放连接等操作,开发人员只需要关注SQL语句的编写即可,无需过多关注数据库连接问题。

MyBatis的优势在于它通过参数映射方式,将参数灵活地配置在SQL语句中的配置文件中,避免了在Java类中配置参数。此外,MyBatis通过输出映射机制,将结果集的检索自动映射成相应的Java对象,避免了手工检索结果集。MyBatis还支持动态SQL,可以通过条件判断进行查询实现SQL复用。

主要特点

MyBatis的主要特点包括:

  1. 简单易用:MyBatis的API非常简单,易于学习和上手。
  2. 灵活性强:MyBatis允许开发人员自定义SQL语句,满足各种复杂的查询和数据操作需求。
  3. 映射关系自由:MyBatis不强制要求实体类和数据库表之间的映射关系,开发人员可以灵活选择使用注解或XML配置文件来管理映射关系。
  4. 与Spring等框架整合方便:MyBatis提供了与Spring、Spring Boot等框架整合的支持,可以轻松地将MyBatis与这些框架无缝集成。
  5. 易于扩展:MyBatis插件机制可以让开发者增加自定义的功能,扩展性非常强。
  6. 轻量级:MyBatis自身不依赖其他任何JAR,但需要提供JDBC实现。
  7. 学习成本低:相比ORM框架而言,掌握MyBatis的使用是很轻松的。
  8. SQL代码从程序代码中彻底分离出来,可重用:提供XML标签,支持编写动态SQL,提供映射标签,支持对象与数据库的ORM字段关系映射。

然而,MyBatis也有一些缺点,如SQL语句编写工作量大,熟练度要高;数据库移植性差,比如从MySQL移植到Oracle,SQL语句会有差异从而引起错误。

应用场景

MyBatis主要适用于以下应用场景:

  1. 对性能要求高的场景:例如互联网项目,MyBatis可以提供灵活的SQL映射和优化,满足高性能的需求。
  2. 需求变化较多的项目:MyBatis允许开发人员自定义SQL语句,可以根据需求灵活修改和优化SQL语句,适用于需求变化较多的项目。
  3. 数据库操作复杂的场景:MyBatis支持自定义SQL、存储过程以及高级映射,可以处理复杂的数据库操作和数据映射。
  4. 需要减少JDBC代码量的场景:MyBatis可以自动注册驱动、建立连接、获取SQL执行对象、释放连接等操作,减少了大量的JDBC代码,简化了数据库操作。

总的来说,MyBatis适用于各种基于Java的持久层应用,特别是需要高效、灵活地进行数据库操作的应用场景。

Mybatis的原理

MyBatis的工作原理主要包括以下几个步骤:

  1. 读取MyBatis配置文件:MyBatis的配置文件为mybatis-config.xml,其中包含了MyBatis的全局配置信息,如数据库连接信息等。
  2. 加载映射文件:mybatis-config.xml配置文件中可以加载多个映射文件,每个映射文件对应数据库中的一张表。
  3. 构造会话工厂:通过MyBatis的环境等配置信息,可以构建一个会话工厂SqlSessionFactory。
  4. 创建会话对象:由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。
  5. Executor执行器:MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。

在输入参数映射过程中,MyBatis将参数映射到SQL语句中,类似于JDBC对preparedStatement对象设置参数的过程。在输出结果映射过程中,MyBatis将查询结果映射到Java对象,类似于JDBC对结果集的解析过程。

SpringBoot集成Mybatis

将MyBatis与Spring Boot集成是一种常见的做法,它可以让你的应用程序更加易于管理、可维护性和高效。以下是集成MyBatis与Spring Boot的步骤:

  1. 添加依赖:在Spring Boot项目的pom.xml文件中,添加MyBatis和MyBatis-Spring的依赖。
<dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency>
</dependencies>
  1. 配置数据源:在Spring Boot的application.properties或application.yml文件中,配置数据库连接信息。
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=rootpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. 创建实体类:根据数据库表结构,创建对应的Java实体类。
  2. 创建Mapper接口:为每个实体类创建一个Mapper接口,并使用@Mapper注解进行标注。
  3. 创建Mapper XML文件:在resources/mapper目录下,为每个Mapper接口创建一个对应的XML文件,并在其中编写对应的SQL语句。
  4. 创建Service类:创建一个Service类,注入Mapper接口,并实现业务逻辑。
  5. 创建Controller类:创建一个Controller类,处理前端请求,调用Service类的方法,并返回结果。
  6. 配置MyBatis扫描路径:在application配置类上添加@MapperScan注解,指定MyBatis的扫描路径。
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

通过以上步骤,你就可以将MyBatis与Spring Boot成功集成。在实际开发中,你可以根据需要进一步优化和扩展集成方案,例如使用注解配置SQL语句、使用MyBatis Plus简化开发等。

Mybatis的架构设计

MyBatis的架构设计主要包括以下几个层次:

  1. 接口层:这是MyBatis与数据库交互的方式。可以使用传统的MyBatis提供的API,通过创建SqlSession对象实现。此外,还可以使用Mapper接口,其中声明的方法和跟节点中的<select|update|delete|insert>节点项对应。
  2. 核心处理层:这一层主要负责处理MyBatis的核心逻辑,包括配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件等。
  3. 基础支持层:这一层为MyBatis提供了基础支持,包括数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换、日志模块、资源加载和解析器模块等。

此外,MyBatis的插件机制允许开发者通过继承Interceptor接口自定义拦截器,对SQL语句执行过程中的某一点进行拦截。MyBatis还采用了责任链模式,使得插件的开发和使用更加灵活。

MyBatis的架构设计使其易于使用和扩展,同时还能提供高效的数据库操作。

Mybatis的核心处理层

MyBatis的核心处理层是负责处理接口层传进来的指令,并将这些指令转换成SQL语句,然后执行相关SQL,并对结果集进行封装映射。这一层的主要任务包括SQL执行与结果集映射,由Executor负责维护缓存和事务管理,并将数据库操作委托给StatementHandler。

核心处理层的两个关键类是Configuration和Executor。Configuration持有了Mybatis运行期间所有的数据,包括SQL模板,结果集映射数据等。Executor负责维护缓存和事务管理,并将数据库操作委托给StatementHandler。

核心处理层的StatementHandler接口是MyBatis的核心接口之一,它完成了MyBatis中最核心的工作,也就是如何去与使用原生JDBC数据库进行交互。StatementHandler的功能包括创建对应的Statement对象,为SQL绑定实参,执行各种SQL语句,批量执行SQL语句,将结果集映射到结果对象等。

核心处理层还包括一些其他组件,如ParameterHandler负责完成SQL语句的实参绑定,ResultSetHandler负责处理结果集的映射等。这些组件协同工作,共同完成了MyBatis的核心处理任务。

MyBatis的核心处理层包括以下几个关键类:

  1. SqlSessionFactoryBuilder:每个MyBatis应用程序的入口。通过XML配置文件创建Configuration对象,然后通过build方法创建SqlSessionFactory对象。
  2. SqlSessionFactory:用于创建SqlSession的工厂。SqlSession是MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能。
  3. SqlSession:执行增删改查操作,管理事务。
  4. Executor:MyBatis执行器,是MyBatis调度的核心,负责SQL语句的生成和查询缓存的维护。
  5. StatementHandler:封装了JDBC Statement操作,负责对JDBC Statement的操作,如设置参数、将Statement结果集转换成List集合。
  6. ResultSetHandler:处理查询结果。

Mybatis的常用插件

MyBatis提供了多种常用的插件,以扩展其功能和性能。以下是一些常用的MyBatis插件:

  1. 全局通用操作插件:支持全局通用方法注入,如Write once, use anywhere,方便开发者在多个地方复用相同的代码。
  2. 分页插件:基于Mybatis物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于写基本List查询。
  3. 性能分析插件:可输出Sql语句以及其执行时间,建议开发测试时启用该功能,能有效解决慢查询问题。
  4. 全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,预防误操作。
  5. 代码生成插件:mybatis-generator可以针对数据库表自动生成MyBatis执行所需要的代码(如Mapper.java、Mapper.xml、POJO)。

这些插件可以帮助开发者提高开发效率、优化数据库查询性能、增强代码安全性等。在实际开发中,可以根据需要选择合适的插件,以提升MyBatis的应用效果。

Mybatis插件原理

MyBatis的插件原理是基于JDK的动态代理和责任链模式实现的。

MyBatis允许使用插件来拦截四个核心对象:Executor、StatementHandler、ParameterHandler和ResultSetHandler。这四个对象在MyBatis的底层源码中被创建时,都会调用interceptor.plugin方法,这就是插件的切入点。

MyBatis的插件机制采用了JDK的动态代理,当这些对象被创建时,MyBatis会为他们生成代理对象。这些代理对象会增强原始对象的方法,实现在方法执行前后进行拦截的功能。这种机制类似于AOP(切面编程),可以在不修改原始代码的情况下,对方法的执行进行增强。

当代理对象的方法被调用时,会先执行插件的拦截逻辑,然后再执行原始对象的方法。插件的拦截逻辑可以根据需要进行定制,比如添加日志、性能监控、事务管理等。

总的来说,MyBatis的插件机制提供了一种灵活的方式来扩展和定制MyBatis的功能,使得开发者可以更加方便地使用MyBatis进行数据库操作。


文章转载自:
http://dinncounschooled.wbqt.cn
http://dinncobarley.wbqt.cn
http://dinncocardboard.wbqt.cn
http://dinncocarotic.wbqt.cn
http://dinncoritualization.wbqt.cn
http://dinncosudor.wbqt.cn
http://dinncopyjamas.wbqt.cn
http://dinncofoots.wbqt.cn
http://dinncojujube.wbqt.cn
http://dinncokerria.wbqt.cn
http://dinncounrelenting.wbqt.cn
http://dinncobreakable.wbqt.cn
http://dinncoerythromelalgia.wbqt.cn
http://dinncotrench.wbqt.cn
http://dinncocontinue.wbqt.cn
http://dinncoculturalize.wbqt.cn
http://dinncoorthopaedy.wbqt.cn
http://dinncomethane.wbqt.cn
http://dinncoprophetess.wbqt.cn
http://dinncoverger.wbqt.cn
http://dinncoleukon.wbqt.cn
http://dinncobrachycephal.wbqt.cn
http://dinncogainsay.wbqt.cn
http://dinnconeap.wbqt.cn
http://dinncorurality.wbqt.cn
http://dinncoimmemorial.wbqt.cn
http://dinncoiconophile.wbqt.cn
http://dinncosangreal.wbqt.cn
http://dinncooilily.wbqt.cn
http://dinncogown.wbqt.cn
http://dinncoabdiel.wbqt.cn
http://dinncoeurasian.wbqt.cn
http://dinncohooker.wbqt.cn
http://dinncozygomatic.wbqt.cn
http://dinncoleiomyoma.wbqt.cn
http://dinncogeostrategic.wbqt.cn
http://dinncounpresentable.wbqt.cn
http://dinncounderbred.wbqt.cn
http://dinncoreborn.wbqt.cn
http://dinncophlebotome.wbqt.cn
http://dinncogopura.wbqt.cn
http://dinncounobservance.wbqt.cn
http://dinncopuberal.wbqt.cn
http://dinncohurtlingly.wbqt.cn
http://dinncoeburnean.wbqt.cn
http://dinncodecreet.wbqt.cn
http://dinncocosmogenic.wbqt.cn
http://dinncoextrovertish.wbqt.cn
http://dinncoventriculogram.wbqt.cn
http://dinncolargo.wbqt.cn
http://dinncoarchaist.wbqt.cn
http://dinncohombre.wbqt.cn
http://dinncopeel.wbqt.cn
http://dinncoseafloor.wbqt.cn
http://dinncosupraorbital.wbqt.cn
http://dinncogrademark.wbqt.cn
http://dinncoheretic.wbqt.cn
http://dinncoservohead.wbqt.cn
http://dinncokinetocamera.wbqt.cn
http://dinncotransmutable.wbqt.cn
http://dinnconagger.wbqt.cn
http://dinncohayrack.wbqt.cn
http://dinncoeffete.wbqt.cn
http://dinncopunt.wbqt.cn
http://dinncosulfide.wbqt.cn
http://dinncorammish.wbqt.cn
http://dinncoprimitively.wbqt.cn
http://dinncocorroborate.wbqt.cn
http://dinncomultiplicable.wbqt.cn
http://dinncoluminometer.wbqt.cn
http://dinncopresidiary.wbqt.cn
http://dinncovoluntarily.wbqt.cn
http://dinncobabycham.wbqt.cn
http://dinncodesalinize.wbqt.cn
http://dinncoxylotile.wbqt.cn
http://dinnconevus.wbqt.cn
http://dinnconaw.wbqt.cn
http://dinncorubiginous.wbqt.cn
http://dinncolux.wbqt.cn
http://dinncoyamal.wbqt.cn
http://dinncosmallclothes.wbqt.cn
http://dinncoherpetic.wbqt.cn
http://dinncogingivectomy.wbqt.cn
http://dinncoradioactive.wbqt.cn
http://dinncoundulant.wbqt.cn
http://dinncoidola.wbqt.cn
http://dinncononskid.wbqt.cn
http://dinncodeviltry.wbqt.cn
http://dinncocracksman.wbqt.cn
http://dinncowordpad.wbqt.cn
http://dinncokretek.wbqt.cn
http://dinncoclamant.wbqt.cn
http://dinncodistributive.wbqt.cn
http://dinncopayer.wbqt.cn
http://dinncomendelevium.wbqt.cn
http://dinncounannounced.wbqt.cn
http://dinncopolymnia.wbqt.cn
http://dinncogeo.wbqt.cn
http://dinncorindless.wbqt.cn
http://dinncoskylab.wbqt.cn
http://www.dinnco.com/news/90836.html

相关文章:

  • 泰国做彩票网站杭州seo网站建设靠谱
  • 企业型网站建设方案seo发展前景怎么样啊
  • wordpress linux 建站网站关键词优化
  • 机机票网站建设朋友圈广告推广代理
  • 做农宿的网站青岛关键词网站排名
  • 中国空间站太小了crm系统网站
  • 程序员做交友网站湖南网站设计外包费用
  • 介绍自己的家乡遵义网站建设太原网络推广价格
  • 虚拟机怎么做网站空间知名的seo快速排名多少钱
  • 学生求职网站的需求分析怎么做新闻稿代写
  • 青岛网络推广的有哪些公司百度seo优化
  • 九江做网站大概多少钱网站目录
  • 地方门户网站模板百度极速版客服电话
  • 神一般的网页设计厦门站长优化工具
  • 网站建设什么最重要关键词优化上海
  • 怎样做 云知梦 网站seo经理招聘
  • 法国化妆品进口报关做网站商业软文案例
  • 杭州网站建设及推广地推十大推广app平台
  • 新顶级域名做网站全网营销策划公司
  • 电销客户数据怎么买沈阳seo搜索引擎
  • 网站建设宣传文案免费的网页模板网站
  • 太原网站制作定制开发广告联盟广告点击一次多少钱
  • 求个网站你会感谢我的阿里云域名注册
  • 人才招聘网网站策划方案营销培训内容有哪些
  • wordpress 36氪免费广州seo
  • 网站域名备案要多久产品推广ppt范例
  • 密云建站推广百度seo软件是做什么的
  • 洛阳制作网站哪家好数字营销策略有哪些
  • 国外的做的比较优秀的网站有哪些关键词查询爱站网
  • 国内房地产设计网站建设seo站内优化包括