MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。
MyBatis 启动流程
-
加载配置文件:
- MyBatis 的启动首先是从加载 MyBatis 的配置文件开始的,通常是
mybatis-config.xml
。 - 这个配置文件包含了 MyBatis 的全局配置信息,如环境配置、数据库连接信息、事务管理器等。
- MyBatis 的启动首先是从加载 MyBatis 的配置文件开始的,通常是
-
创建 SqlSessionFactory:
- 使用
SqlSessionFactoryBuilder
类来读取mybatis-config.xml
配置文件,并创建一个SqlSessionFactory
实例。 SqlSessionFactory
是 MyBatis 的核心接口,用于创建SqlSession
。
- 使用
-
创建 SqlSession:
- 通过
SqlSessionFactory
实例创建SqlSession
对象。 SqlSession
提供了执行 SQL、获取映射器(Mapper)等方法。
- 通过
-
获取 Mapper:
- 使用
SqlSession
的getMapper
方法获取 Mapper 接口的实例。 - Mapper 接口通常包含了与数据库交互的方法,这些方法对应着 SQL 语句。
- 使用
-
执行操作:
- 通过 Mapper 接口实例调用方法来执行 SQL 语句。
- MyBatis 会根据方法的注解或 XML 映射文件中的配置,找到对应的 SQL 语句并执行。
-
关闭 SqlSession:
- 操作完成后,需要关闭
SqlSession
以释放资源。
- 操作完成后,需要关闭
MyBatis 执行流程
-
接收请求:
- 客户端发送请求,通常是调用 Mapper 接口的方法。
-
查找 SQL 语句:
- MyBatis 根据 Mapper 接口方法的签名(如方法名和参数类型)查找对应的 SQL 语句。
- 这个 SQL 语句可以是注解在 Mapper 接口方法上的,也可以是 XML 映射文件中的。
-
参数处理:
- 如果 SQL 语句需要参数,MyBatis 会将方法的参数转换为 JDBC 能够理解的类型,并设置到 SQL 语句中。
-
执行 SQL:
- MyBatis 使用 JDBC 执行 SQL 语句,并将结果集(ResultSet)返回。
-
结果映射:
- MyBatis 将结果集映射为 Java 对象。这通常是通过在 XML 映射文件中定义
<resultMap>
来完成的。 - 如果 SQL 语句返回的是单条记录,MyBatis 会将结果映射为一个 Java 对象;如果返回的是多条记录,MyBatis 会将结果映射为一个 Java 对象列表。
- MyBatis 将结果集映射为 Java 对象。这通常是通过在 XML 映射文件中定义
-
返回结果:
- MyBatis 将映射后的 Java 对象返回给客户端。
-
关闭连接:
- 在完成所有操作后,MyBatis 会关闭与数据库的连接。
这就是 MyBatis 的启动流程和执行流程。MyBatis 通过配置文件、SqlSessionFactory
、SqlSession
和 Mapper 接口,将 SQL 语句的执行和 Java 对象的映射过程抽象化,使得开发者能够更专注于业务逻辑的实现。