返回

深入剖析 Mybatis 中的 SqlSession 和 Executor(续)

见解分享

在上一篇文章中,我们对 MyBatis 的 SqlSessionFactory 进行了深入探究,了解了它是如何创建的。今天,我们将继续我们的旅程,深入分析 MyBatis 是如何创建 SqlSession 和 Executor 的。

SqlSession

SqlSession 是 MyBatis 最重要的组件之一。它代表了一个数据库会话,允许你执行 SQL 语句并管理与数据库的连接。

SqlSession 是通过 SqlSessionFactory 来创建的。当你想执行一个 SQL 语句时,你可以通过 SqlSessionFactory 调用 openSession() 方法来获取一个 SqlSession 对象。SqlSession 对象是一个轻量级的对象,它包含了与数据库连接的所有必要信息,以及执行 SQL 语句所需的方法。

SqlSession 有很多方法可以让你执行 SQL 语句。你可以使用 selectOne() 方法来执行一个查询并返回一个结果对象,也可以使用 selectList() 方法来执行一个查询并返回一个结果列表。此外,你还可以使用 insert()、update() 和 delete() 方法来执行插入、更新和删除操作。

SqlSession 还提供了很多其他方法,可以让你管理与数据库的连接。你可以使用 commit() 方法来提交一个事务,也可以使用 rollback() 方法来回滚一个事务。此外,你还可以使用 close() 方法来关闭一个 SqlSession 对象。

Executor

Executor 是 SqlSession 中的一个重要组件。它负责执行 SQL 语句并管理与数据库的连接。

Executor 有两种类型:SimpleExecutor 和 ReuseExecutor。SimpleExecutor 是一个简单的执行器,它每次执行一个 SQL 语句都会创建一个新的连接。ReuseExecutor 是一个可重用的执行器,它可以复用已经存在的连接。

SqlSession 在创建时会根据配置选择一个合适的 Executor。默认情况下,SqlSession 会使用 ReuseExecutor。

Executor 提供了很多方法可以让你执行 SQL 语句。你可以使用 query() 方法来执行一个查询并返回一个结果对象,也可以使用 update() 方法来执行一个更新操作。此外,你还可以使用 batch() 方法来执行一个批处理操作。

Executor 还提供了很多其他方法,可以让你管理与数据库的连接。你可以使用 commit() 方法来提交一个事务,也可以使用 rollback() 方法来回滚一个事务。此外,你还可以使用 close() 方法来关闭一个 Executor 对象。

SqlSession 和 Executor 的协作

SqlSession 和 Executor 是 MyBatis 中两个重要的组件,它们协同工作以执行 SQL 语句并管理与数据库的连接。

当你想执行一个 SQL 语句时,你可以通过 SqlSession 调用相应的方法。SqlSession 会将这个请求转发给 Executor。Executor 会根据请求的类型选择一个合适的执行策略。

Executor 会执行 SQL 语句并返回结果。SqlSession 会将结果返回给你。

SqlSession 和 Executor 的协作过程如下图所示:

[Image of SqlSession and Executor collaboration]

总结

SqlSession 和 Executor 是 MyBatis 中两个重要的组件,它们协同工作以执行 SQL 语句并管理与数据库的连接。

SqlSession 代表了一个数据库会话,它允许你执行 SQL 语句并管理与数据库的连接。

Executor 是 SqlSession 中的一个重要组件,它负责执行 SQL 语句并管理与数据库的连接。

SqlSession 和 Executor 协同工作以执行 SQL 语句并管理与数据库的连接。