MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象)映射成数据库中的记录。
MyBatis 的核心特点
-
简单易学:MyBatis 本身就很小且简单。没有任何第三方依赖,最简单安装只要两个 jar 文件 + 配置文件和映射文件。
-
灵活:MyBatis 不会对应用程序或者数据库的现有设计强加任何影响。SQL 写在 XML 里,便于统一管理和优化。提供 XML 标签,支持编写动态 SQL 语句。
-
解除 SQL 与程序代码的耦合:通过提供映射文件,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。
-
提供映射标签,支持对象与数据库的 ORM 字段关系映射:通过简单的 XML 或注解,将对象与数据库表对应起来。
-
提供动态 SQL:MyBatis 提供了强大的动态 SQL 功能,可以根据不同条件拼接 SQL 语句。
-
支持存储过程:MyBatis 支持直接调用存储过程。
MyBatis 的基本架构
MyBatis 的架构大致可以分为三个层次:
-
接口层:提供和数据库交互的接口,即 Mapper 接口。
-
数据处理层:负责具体的 SQL 查找、SQL 解析、SQL 执行和执行结果映射处理等。它主要的目的是根据调用的接口方法,通过动态 SQL 解析构建出最终要执行的 SQL 语句,然后使用 SQL 会话(SqlSession)执行 SQL,并将结果映射成 Java 对象返回。
-
基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将它们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
MyBatis 的使用步骤
-
添加 MyBatis 依赖:在你的项目中添加 MyBatis 的 jar 包或者通过 Maven/Gradle 引入依赖。
-
配置 MyBatis:创建 MyBatis 的配置文件(如 mybatis-config.xml),配置数据源、事务管理器等。
-
创建 Mapper 接口:定义与数据库表对应的 Mapper 接口。
-
编写 Mapper XML 文件:在 Mapper XML 文件中编写 SQL 语句,并映射到 Mapper 接口的方法上。
-
在 MyBatis 配置文件中注册 Mapper:将 Mapper 接口的全限定名添加到 MyBatis 配置文件的
<mappers>
标签中。 -
编写业务代码:在业务代码中通过 SqlSession 获取 Mapper 接口的代理对象,并调用其方法执行数据库操作。