> For the complete documentation index, see [llms.txt](https://bohans.gitbook.io/ji-chu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bohans.gitbook.io/ji-chu/mybatis/ji-chu-zhi-shi/1.-gai-shu.md).

# 概述

MyBatis 是一款优秀的支持自定义 SQL 查询、存储过程和高级映射的持久层框架，消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索。

* **MyBatis可以使用XML或注解进行配置和映射，MyBatis通过将参数映射到配置的 SQL 形成最终执行的 SQL 语句，最后将执行 SQL 的结果映射成 Java 对象返回。**
* 与其他的 **ORM（对象关系映射）**&#x6846;架不同，<mark style="color:blue;">**MyBatis 并没有将 Java 对象与数据库表关联起来，而是将 Java 方法与 SQL 语句关联。MyBatis 允许用户充分利用数据库的各种功能，例如存储过程、视图、各种复杂的查询以及某数据库的专有特性。**</mark>
* MyBatis 提供了一个**映射引擎**，声明式地将 SQL 语句的执行结果与对象树映射起来。通过使用一种内建的类 XML 表达式语言，SQL 语句可以被动态生成。
* MyBatis 支持**声明式数据缓存（declarative data caching）**。当一条 SQL 语句被标记为“可缓存”后，首次执行它时从数据库获取的所有数据会被存储在高速缓存中，后面再执行这条语句时就会从高速缓存中读取结果，而不是再次命中数据库。MyBatis 提供了默认情况下基于 Java HashMap 的缓存实现，以及用于与 OSCache、Ehcache、Hazelcast 和 Memcached 连接的默认连接器，同时还提供了 API 供其他缓存实现使用。
