MyBatis 是一个基于 Java 的持久层框架,它通过将 SQL 语句与 Java 代码分离,提供了一种灵活、高效的数据访问方式。以下是 MyBatis 的执行流程:
-
加载配置文件:
- MyBatis 通过读取配置文件(通常是 XML 格式或者 Java 代码中的配置类)来初始化框架。配置文件中包含了数据库连接信息、SQL 映射文件的位置、事务管理等设置。
-
创建 SqlSessionFactory:
- 根据配置文件中的信息,MyBatis 创建一个
SqlSessionFactory
对象。这个对象是创建SqlSession
的工厂,负责管理数据库连接和事务等资源。
- 根据配置文件中的信息,MyBatis 创建一个
-
创建 SqlSession:
- 通过
SqlSessionFactory
创建一个SqlSession
对象。SqlSession
是 MyBatis 中进行数据库操作的主要接口,它提供了执行 SQL 语句、提交事务、回滚事务等方法。
- 通过
-
执行 SQL 语句:
- 使用
SqlSession
对象执行 SQL 语句。可以通过以下几种方式执行 SQL 语句:- 直接调用
SqlSession
的方法,如selectOne
、selectList
、insert
、update
、delete
等,传入 SQL 语句的 ID 和参数。 - 使用 Mapper 接口,通过代理模式自动生成实现类,调用 Mapper 接口中的方法来执行 SQL 语句。Mapper 接口中的方法名与 SQL 映射文件中的 SQL 语句 ID 相对应。
- 直接调用
- MyBatis 根据传入的 SQL 语句 ID 和参数,查找对应的 SQL 语句,并将参数传递给 SQL 语句进行执行。
- 使用
-
数据库连接和事务管理:
- MyBatis 在执行 SQL 语句时,会自动管理数据库连接和事务。它会从连接池中获取数据库连接,并在事务范围内执行 SQL 语句。如果需要提交事务,可以调用
SqlSession
的commit
方法;如果需要回滚事务,可以调用rollback
方法。
- MyBatis 在执行 SQL 语句时,会自动管理数据库连接和事务。它会从连接池中获取数据库连接,并在事务范围内执行 SQL 语句。如果需要提交事务,可以调用
-
结果映射:
- 当 SQL 语句执行完成后,MyBatis 将数据库返回的结果集映射为 Java 对象。可以通过配置结果映射规则,将数据库表中的列映射到 Java 对象的属性上。
- MyBatis 支持多种结果映射方式,如自动映射、手动映射、使用自定义的结果处理器等。
-
关闭资源:
- 在完成数据库操作后,需要关闭
SqlSession
和SqlSessionFactory
,释放资源。可以在 finally 块中调用SqlSession
的close
方法来关闭SqlSession
,并在适当的时候关闭SqlSessionFactory
。
- 在完成数据库操作后,需要关闭
总之,MyBatis 的执行流程包括加载配置文件、创建SqlSessionFactory
和SqlSession
、执行 SQL 语句、管理数据库连接和事务、结果映射以及关闭资源等步骤。通过这些步骤,MyBatis 提供了一种方便、高效的方式来进行数据库访问和操作。