1.什么是 MyBatis
MyBatis 是一款优秀的 Java 持久化框架,它不同于 Hibernate 等 ORM 框架,MyBatis 更像是一款数据持久化的工具,而不是针对整个数据库,像 Hibernate 一样,自动创建对象关系映射。因此,MyBatis 在一些数据表结构比较复杂,或者需要很多特殊的 SQL 查询的应用场景下表现更加出色。
MyBatis 支持自定义 SQL、存储过程以及高级映射。它免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
2.MyBatis 特点
MyBatis 特点总结如下:
-
SQL 映射简单
MyBatis 的核心是 SQL 映射,基于 XML 配置的方式,它能够很方便地进行持久化映射。开发者可以直接在 XML 文件中配置 SQL 语句,MyBatis 会将这些 SQL 语句映射到 Java 对象中,然后进行数据的 CRUD。除了 XML 配置外,MyBatis 也支持注解方式动态生成 SQL 语句(基于注解的方式是我们常用的)。
-
灵活开发
MyBatis 支持开发者在配置文件中引用多个 SQL 映射文件,不同的 SQL 映射文件之间可以引用相同的 SQL 映射语句,通过这种方式,开发者可以将 SQL 的模块化得更加细致,提高代码的复用性。MyBatis 的也支持 Java 模型和 SQL 语句的动态绑定,这很适合做一些动态构建查询的需求。
-
优秀的缓存机制
MyBatis 的缓存机制设计很好,支持多级缓存和可插拔的缓存实现,使得数据的访问效率大大提高。MyBatis 默认支持两级缓存,一级缓存是会话级别的缓存,二级缓存是全局级别的缓存。开发者可以自定义缓存实现,并且 MyBatis 的缓存实现支持 LRU(最近最少使用) 策略和 FIFO(先进先出)策略的缓存机制。
-
插件特性
MyBatis 还提供了插件特性,这是 MyBatis 优秀的扩展性的表现,插件可以在 SQL 执行的各个阶段进行代理增强,自定义 SQL 运行时所需的环境和附加功能。MyBatis 提供了许多插件接口,例如 Executor Plugin、 Statement Handler Plugin、 Result Set Handler Plugin 以及 Type Handler Plugin。
3.MyBatis 与 Hibernate
MyBatis 与 Hibernate 的简单对比:
MyBatis | Hibernate | |
---|---|---|
XML 方式配置映射 | 支持 | 支持 |
注解方式配置映射 | 支持 | 支持 |
自动生成目标 SQL | 不支持 | 支持 |
复杂的 SQL 操作 | 支持 | 部分支持 |
SQL 优化难易程度 | 方便 | 不方便 |
底层数据库的可移植性 | 映射 SQL 与数据库绑定 | 有灵活的“方言”支持 |