返回

揭秘 MyBatis 执行器:3 大类型,13 大操作,逐一解析

后端

在 MyBatis 中,执行器(Executor)是负责执行 SQL 语句并返回结果的组件。它位于 MyBatis 的核心架构中,负责将 SQL 语句转换为 JDBC 调用,并从数据库中获取结果。

MyBatis 提供了三种类型的执行器:

  1. SimpleExecutor: 这是最简单的执行器,每次执行 SQL 语句都会创建一个新的 PreparedStatement 对象,然后执行该语句并关闭 PreparedStatement 对象。
  2. ReuseExecutor: 这种执行器会缓存 PreparedStatement 对象,以便可以重复使用。这可以提高性能,尤其是在执行大量相同或类似的 SQL 语句时。
  3. BatchExecutor: 这种执行器可以将多个 SQL 语句批处理在一起执行。这可以进一步提高性能,尤其是当需要执行大量独立的 SQL 语句时。

每种执行器都有自己的优缺点,在不同的场景下使用不同的执行器可以获得最佳的性能。

执行器支持的操作

除了执行 SQL 语句外,执行器还支持以下操作:

  1. 创建 PreparedStatement 对象: 执行器会根据 SQL 语句创建一个 PreparedStatement 对象,该对象可以多次执行,而无需重新编译。
  2. 设置 PreparedStatement 对象的参数: 执行器会根据 SQL 语句中的参数,设置 PreparedStatement 对象的参数值。
  3. 执行 PreparedStatement 对象: 执行器会执行 PreparedStatement 对象,并返回结果。
  4. 关闭 PreparedStatement 对象: 执行器会关闭 PreparedStatement 对象,释放资源。
  5. 提交事务: 执行器会提交当前的事务,将对数据库的更改持久化。
  6. 回滚事务: 执行器会回滚当前的事务,撤销对数据库的更改。
  7. 设置自动提交: 执行器可以设置自动提交模式,在这种模式下,每次执行 SQL 语句都会自动提交。
  8. 获取自动提交模式: 执行器可以获取当前的自动提交模式。
  9. 设置事务隔离级别: 执行器可以设置事务隔离级别,以控制事务的并发性。
  10. 获取事务隔离级别: 执行器可以获取当前的事务隔离级别。
  11. 设置超时时间: 执行器可以设置 SQL 语句的超时时间,如果 SQL 语句执行时间超过超时时间,则会抛出异常。
  12. 获取超时时间: 执行器可以获取当前的 SQL 语句超时时间。
  13. 关闭执行器: 执行器可以被关闭,以便释放资源。

使用执行器执行 CRUD 操作

执行器可以用来执行 CRUD 操作(创建、读取、更新和删除)。

创建操作

要执行创建操作,可以使用以下代码:

int insertCount = executor.insert(statement, parameter);

其中,executor 是执行器对象,statement 是 SQL 语句,parameter 是 SQL 语句的参数。

读取操作

要执行读取操作,可以使用以下代码:

List<Object> resultList = executor.query(statement, parameter, resultSetHandler);

其中,executor 是执行器对象,statement 是 SQL 语句,parameter 是 SQL 语句的参数,resultSetHandler 是结果集处理器。

更新操作

要执行更新操作,可以使用以下代码:

int updateCount = executor.update(statement, parameter);

其中,executor 是执行器对象,statement 是 SQL 语句,parameter 是 SQL 语句的参数。

删除操作

要执行删除操作,可以使用以下代码:

int deleteCount = executor.delete(statement, parameter);

其中,executor 是执行器对象,statement 是 SQL 语句,parameter 是 SQL 语句的参数。

总结

执行器是 MyBatis 中一个非常重要的组件,它负责执行 SQL 语句并返回结果。MyBatis 提供了三种类型的执行器,每种执行器都有自己的优缺点。在不同的场景下使用不同的执行器可以获得最佳的性能。

执行器还支持各种各样的操作,包括创建 PreparedStatement 对象、设置 PreparedStatement 对象的参数、执行 PreparedStatement 对象、关闭 PreparedStatement 对象、提交事务、回滚事务、设置自动提交、获取自动提交模式、设置事务隔离级别、获取事务隔离级别、设置超时时间、获取超时时间、关闭执行器等。

执行器可以用来执行 CRUD 操作,包括创建操作、读取操作、更新操作和删除操作。