# MyBatis教程 - 1 MyBatis简介

# 1.1 MyBatis

MyBatis 是一款流行的持久层框架,主要用于在 Java 应用程序中操作数据库。它简化了传统的 JDBC 代码,通过 XML 或注解的方式配置 SQL 语句,并将这些 SQL 语句与 Java 对象进行映射。MyBatis 的核心思想是使用 SQL 映射语句来自动生成对数据库的操作,而无需手动编写大量的 JDBC 代码。也就是在 Java 中帮我们对接数据库的,通过 MyBatis,在 Java项目中可以很方便的与操作数据库。

MyBatis 被称为 半自动 的 ORM(对象关系映射)框架。

什么是 ORM 框架呢?

ORM(Object-Relational Mapping),也就是对象关系映射,将代码中的对象与数据库中的数据进行映射。

举个例子:

有一个 User 类,与数据库中的 tb_user 表对应,User 类的每个对象,与 t_user 表中的一条记录对应。如下图:

MyBatis 被称为"半自动"的 ORM 框架,主要是因为它介于全自动 ORM 框架(如 Hibernate)和纯手动 SQL 编写之间,与全自动 ORM 框架不同,使用 Hibernate 我们可以不写SQL,会自动生成 SQL,但是 MyBatis 需要开发者手动编写 SQL 语句。

Hibernate操作简单,开发效率要比 MyBatis高,但是因为使用了反射操作太多,性能逊于 MyBatis。而且默认会将数据库中的字段全部查出来映射到 Java 实体类,造成性能浪费。对于复杂的 SQL 支持比较困难,可能需要绕过框架来实现。

虽然使用 MyBatis 需亲自编写查询、插入、更新等 SQL 操作,但是 MyBatis 可以自动将结果集映射到 Java 对象,这样可以确保了对 SQL 的完全控制,又方便了数据映射的操作。

# 1.2 MyBatis的特性

  • SQL 映射:MyBatis 允许开发者直接编写 SQL 语句,并通过 XML 配置文件或注解将 SQL 语句与 Java 对象映射起来。相比于其他 ORM(对象关系映射)框架,MyBatis 更加灵活,特别适合复杂查询的场景。

  • 动态 SQL:MyBatis 提供了强大的动态 SQL 功能,允许在 SQL 语句中使用条件判断、循环等逻辑,动态生成最终执行的 SQL 语句。

  • 自动映射:MyBatis 可以自动将查询结果映射到 Java 对象上,支持简单映射(将结果集的一列映射到对象的一个字段)和复杂映射(通过多表连接等复杂查询将结果映射到嵌套的对象结构中)。

  • 缓存支持:MyBatis 支持一级缓存和二级缓存,一级缓存是基于 SqlSession 的缓存,二级缓存是跨 SqlSession 的缓存,适用于整个应用程序。

  • 插件机制:MyBatis 提供了插件机制,开发者可以编写自定义插件来拦截 MyBatis 执行的各种操作,如 SQL 执行、参数处理、结果映射等。

# 1.3 MyBatis的核心组件

  • SqlSessionFactory:用于创建 SqlSession 对象,SqlSession 是 MyBatis 操作数据库的主要接口。

  • SqlSession:代表与数据库的一次会话,提供了数据库操作的各种方法,如 select、insert、update、delete 等。

  • Mapper:Mapper 接口是 MyBatis 提供的一种用于定义 SQL 映射的方式,开发者可以通过编写接口并在接口方法上添加注解,或者通过 XML 文件来实现 SQL 映射。


上来就讲这些,完全是没有体会的,但是还是要说一下,简单看一下,看完整个课程,再回来回顾吧。