首页 > 编程笔记 > Java笔记 阅读:1

MyBatis到底是什么?(新手必看)

本节首先会介绍什么是 ORM、什么是 MyBatis、MyBatis 的特点以及核心概念,最后介绍 MyBatis 是如何启动、如何加载配置文件的。

什么是ORM

ORM(Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。简单地说,ORM 通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。

当我们开发应用程序时,需要编写大量的数据访问层代码,用来操作数据库中的数据,这些代码要么是大量重复的代码,要么操作特别烦琐。针对这些问题,ORM 提供了完善的解决方案,简化了将对象持久化到关系数据库中的操作。

ORM 框架的本质是简化编程中操作数据库的编码,Java 领域发展到现在,ORM 框架层出不穷,但是,基本上还是 HibernateMybatis 两个比较流行并被广泛使用:
Hibernate 宣称可以不用写一句 SQL,而 MyBatis 以动态 SQL 见长,两者各有特点,开发者可以根据需求灵活使用。有一个有趣的现象:传统企业大多喜欢使用 Hibernate,而互联网行业则通常使用 MyBatis。

什么是MyBatis

MyBatis 是一款优秀的数据持久层 ORM 框架,被广泛地应用于应用系统。最早是 Apache 的一个开源项目 iBatis,2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis,2013 年 11 月又迁移到了 GitHub。

MyBatis 支持定制化的 SQL、存储过程和高级映射,能够非常灵活地实现动态 SQL,可以使用简单的 XML 或注解来配置和映射原生信息,能够轻松地将 Java 的 POJO(Plain Ordinary Java Object,普通的 Java 对象)与数据库中的表和字段进行映射关联。

MyBatis作为一款使用广泛的开源软件,它的特点如下:

MyBatis的核心概念

MyBatis 由 Mapper 配置文件、Mapper 接口、执行器、会话等组件组成。下面就来介绍这些非常重要的组件和概念。

1) Mapper配置文件

Mapper 配置文件可以使用基于 XML 的 Mapper 配置文件来实现,也可以使用基于 Java 注解的 MyBatis 注解来实现,甚至可以直接使用 MyBatis 提供的 API 来实现。

2) Mapper接口

Mapper 接口是指自定义的数据操作接口,类似于通常所说的 DAO 接口。

早期的 Mapper 接口需要自定义去实现,现在 MyBatis 会自动为 Mapper 接口创建动态代理对象。Mapper 接口的方法通常与 Mapper 配置文件中的 select、insert、update、delete 等 XML 节点一一对应。

3) Executor(执行器)

MyBatis 中所有 SQL 语句的执行都是通过 Executor 进行的,Executor 是 MyBatis 的一个核心接口。

4) SqlSession(会话)

MyBatis的关键对象,类似于 JDBC 中的连接(Connection),SqlSession 对象完全包含数据库相关的所有执行 SQL 操作的方法,它的底层封装了 JDBC 连接,可以用 SqlSession 实例来直接执行被映射的 SQL 语句。

5) SqlSessionFactory(会话工厂)

MyBatis 的关键对象,它是单个数据库映射关系经过编译后的内存镜像。SqlSessionFactory 对象的实例可以通过 SqlSessionFactoryBuilder 对象类获得。

6) SqlSessionFactoryBuilder构建器

用于解析配置文件,包括属性配置、别名配置、拦截器配置、数据源和事务管理器等,可以从 XML 配置文件或一个预定义的配置实例进行构建。

MyBatis的启动流程

MyBatis 的使用虽然简单,但是,它属于高度封装的框架,因此,我们必须熟悉 MyBatis 的启动和执行过程。

具体的工作流程如下图所示:


图 1 MyBatis 的启动流程


总结起来,MyBatis 主要有两大核心组件,分别是 SqlSessionFactory 和 Mapper。SqlSessionFactory 负责创建数据库会话,Mapper 主要提供 SQL 映射。

相关文章