「这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战
我们对原始 JDBC 操作数据库都存在哪些问题进行了分析?接下来我们再对 Mybatis 做一个简介。我有相伴,让是的世界不在孤单。
什么是 Mybatis
首先大家要明确 Mybatis 就是对 JDBC 一个封装。因为原始 JDBC 在操作数据库时是存在很多问题的,那 Mybatis 对原始 JDBC 进行了一个封装,把原始 JDBC 操作数据库所存在的问题进行了规避。
什么是 Mybatis 呢?我们先来看一下 Mybatis 英文介绍:
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
什么是 Mybatis 呢?我们先来看一下 Mybatis 中文介绍:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
原文直接翻译过来的概念很抽象,那我们简单的解释一下。
Mybatis 是一个优秀的基于 ORM 的半自动轻量级持久层框架 。它对原始 JDBC 操作数据库的过程进行封装,只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等繁琐的过程,都交由 Mybatis 框架来处理。我们之前在使用原始 JDBC 操作数据库时,这些步骤是不是都要由我们手动来完成。
半自动 VS 全自动
半自动与全自动框框本质的区别是什么?
是否需要手动编写 SQL 语句。给大家去举一个例子,全自动框架比较出名的就是我们之前在给大家去介绍 hibernate 框架,Hibernate 就是一个比较出名的全自动持久层框架。在使用 Hibernate 在进行查询或者进行关联对象查询的时候,其实是无需编写任何的 SQL 语句,只需要调用它方法即可,SQL 语句由框架的底层自动来为我们生成,对于我们来说只需要调用方法即可。
如果我们是使用半自动持久层框架,它就是一个半自动持久层框架。我们如果进行查询或者进行关联对象的查询时,是需要我们手动来编写 SQL 语句。
看到这里,可能有的人就会有疑问了,看起来全自动持久层框架好像要比半自动持久层框架还要方便、还要好用,因为它是无需再去编写任何的 SQL 语句,只需要调用方法即可。
但是大家要注意,如果我们在使用全自动持久层框架对数据库进行操作时,SQL 语句确实不需要我们手动编写,是它底层自动生成的,但是它自动生成的这些 SQL 语句,我们还能对其进行优化吗?我们是不是就不能对它自动生成的 SQL 语句进行优化。
在互联网项目中,大家都知道 SQL 语句的优化也是很重要的,所以更建议大家去使用半自动持久层框架。
我们虽然在使用 Mybatis 过程中是需要手动编写 SQL 语句的,但是我们也是可以对我们手动编写的 SQL 语句再进行优化。
轻量级
轻量级指的是什么呢?指的是程序在启动期间所需要消耗的资源多少,EJB 是一个重量级框架,它在启动期间所需要消耗的资源相对多,需要占有大量内存和 CPU 资源,把这样的框架称为重量重量级框架。而现在我们学习的 Mybatis,以及后续大家要学习的 Spring、Spring MVC,都是一些轻量级框架,这些框架在启动期间所需要消耗的资源是很少。
Mybatis 历史
而现在如果我们使用yy。 的话,这些步骤我们就无需操作了,我们只有一个关注点,那么就是搜狗本身,我们只关注我们要去执行的搜狗怎么编写就ok啊。 这个呢就是买ys的一个简介,那介绍完马伯斯之后,我们再去了解一下马伯斯的一个历史。
Mybatis 原本是 Apache 的一个开源项目,原名是 iBatis。2010年6月这个项目由apache software foundation迁移到了google code,随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis ,代码于2013年11月迁移到Github。
GitHub 地址:github.com/mybatis/myb…
Hibernate VS Mybatis
Hibernate 和 MyBatis 是 Java 中使用最为广泛的两个 ORM 框架,二者各有千秋,我们将它们对比并总结出如下两点:
- Hibernate: 全自动化 ORM 框架,数据库移植性好,基础业务几乎不需要写 SQL;易学难精,上手简单但熟练使用需要阅读大量文档,框架结构复杂。
- MyBatis: 半自动化 ORM 框架,数据库移植性一般,基础业务仍需写 SQL,但可以通过基础 Mapper 来简化;易学易用,上手简单,结构精简清晰,易深入学习。
对比发现: Hibernate 适合在需求明确、业务固定的项目中使用,如 OA、ERP 项目;MyBatis 适合在需求多变,快速迭代的项目中使用,如互联网的电商项目。
为什么要使用 Mybatis
原始 JDBC 编程—当我们使用原始 JDBC 持久化的时候,SQL 语句被硬编码到 Java 代码中。这样耦合度太高。代码不易于维护。在实际项目开发中会经常添加 SQL 语句或者修改 SQL 语句,这样我们就只能到 Java 代码中去修改,修改之后需要重新打包部署,非常麻烦。