什么是 MyBatis

举报
村雨遥 发表于 2021/12/17 08:22:16 2021/12/17
【摘要】 前言 什么是持久化持久化是 将程序数据在持久状态和瞬时状态间转换的机制,将数据保存到可永久保存的存储设备中。最常见的就是将内存中的对象存储在数据库中,或者存在磁盘文件、XML 数据文件中等等。其中,文件 IO 属于持久化机制,而 JDBC 也是一种持久化机制。 为什么需要持久化之所以需要持久化,是由于内存自身缺陷导致。我们知道,内存在遇到某些外界因素影响后会丢失,但是我们的一些数据是绝对不...

前言

什么是持久化

持久化是 将程序数据在持久状态和瞬时状态间转换的机制,将数据保存到可永久保存的存储设备中。最常见的就是将内存中的对象存储在数据库中,或者存在磁盘文件、XML 数据文件中等等。其中,文件 IO 属于持久化机制,而 JDBC 也是一种持久化机制。

为什么需要持久化

之所以需要持久化,是由于内存自身缺陷导致。我们知道,内存在遇到某些外界因素影响后会丢失,但是我们的一些数据是绝对不能丢失的,但我们又无法保证不收外界因素影响。同时内存成本较高,比起硬盘、光盘等外存,其价格要高上几个数量级,而且维持成本也较高。在这种情况下,我们不得不寻求另一种方案来存储数据对象,而持久化就是其中的一种选择,我们能够通过持久化将数据缓存到外存,从而降低成本。

什么是持久层

所谓持久层,就是用于完成持久化工作的代码块(dao 层【DAO(Data Access Object)】)。数据持久化通常都是将内存中的数据保存到磁盘中来加以固化,而实现这一过程大多是通过 关系数据库 来完成。而且比起其他部分,该层需要有一个较为清晰和严格的逻辑边界。

什么是 MyBatis

为什么不用 JDBC?

针对数据库操作,Java 其实已经提供了相应的解决方案 – JDBC。那既然已经有了现成的工具,那为什么还会有 MyBatis 的出现呢?

虽然 JDBC 提供了对数据库操作的解决方案,但是存在着如下问题:

  1. 数据库连接的频繁创建和释放造成了一定程度上的资源浪费,从而影响到系统性能,但如果使用数据库连接池就能在一定程度上缓解该问题;
  2. SQL 语句在代码中出现,会造成代码不易维护;
  3. 使用 preparedStatement 向占位符传递参数时存在硬编码,也会进一步加大系统维护的难度;
  4. 对结果集进行解析时存在硬编码,SQL 变化将导致解析代码改变,系统难以维护,但如果能将数据库记录进行封装成 POJO 对象,解析起来就会方便很多。

MyBatis 介绍

MyBatis 是一个持久层框架,是一个半自动化的 ORM 框架,不仅支持自定义 SQL、存储过程以及高级映射。还简化了 JDBC 代码以及设置参数和获取结果集的工作过程,使得我们只需要通过简单的 XML 或注解配置,就能将原始类型、接口和 Java POJO 映射为数据库中的记录。

通过对 JDBC 操作数据库的过程进行封装,我们只需要关注 SQL 而不用再去处理注册驱动、创建 connection、创建 statement、手动设置参数、结果集检索等复杂的过程代码。

不同于其他的对象关系映射框架,MyBatis 并未将 Java 对象和数据库表关联,而是将 Java 方法与 SQL 语句关联。

总的来讲,MyBatis 有如下优点:

  • 简单易学:自身小且简单,无任何第三方依赖;
  • 灵活:MyBatis 不会对应用程序或数据库的现有设计强加任何影响,写在 XML 中,便于统一管理和优化;
  • 解除 SQL 与代码程序的耦合:通过提供 DAO 层,将业务逻辑与数据访问逻辑分离,使系统设计更加清晰、易维护、易于单元测试,提高了程序的可维护性;
  • 提供 XML 标签,支持编写动态 SQL

MyBatis 安装

  1. 首先下载最新版本 MyBatis;

  1. 解压下载好的安装包,将 mybatis-xxx.jar 放到你项目的类路径下(classpath);

  1. 如果是 Maven 项目,在 pom.xml 中添加如下依赖即可;
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

总结

以上就是今天的所有内容了,主要讲了持久化相关的知识,然后对 Mybatis 做了简单的介绍以及我们为什么要用 Mybatis,最后则是如何安装 Mybatis。原创不易,如果你觉得我写的内容对你有所帮助,那就点赞关注吧。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。