揭秘 MyBatis 执行器:3 大类型,13 大操作,逐一解析
2023-09-19 20:04:42
在 MyBatis 中,执行器(Executor)是负责执行 SQL 语句并返回结果的组件。它位于 MyBatis 的核心架构中,负责将 SQL 语句转换为 JDBC 调用,并从数据库中获取结果。
MyBatis 提供了三种类型的执行器:
- SimpleExecutor: 这是最简单的执行器,每次执行 SQL 语句都会创建一个新的 PreparedStatement 对象,然后执行该语句并关闭 PreparedStatement 对象。
- ReuseExecutor: 这种执行器会缓存 PreparedStatement 对象,以便可以重复使用。这可以提高性能,尤其是在执行大量相同或类似的 SQL 语句时。
- BatchExecutor: 这种执行器可以将多个 SQL 语句批处理在一起执行。这可以进一步提高性能,尤其是当需要执行大量独立的 SQL 语句时。
每种执行器都有自己的优缺点,在不同的场景下使用不同的执行器可以获得最佳的性能。
执行器支持的操作
除了执行 SQL 语句外,执行器还支持以下操作:
- 创建 PreparedStatement 对象: 执行器会根据 SQL 语句创建一个 PreparedStatement 对象,该对象可以多次执行,而无需重新编译。
- 设置 PreparedStatement 对象的参数: 执行器会根据 SQL 语句中的参数,设置 PreparedStatement 对象的参数值。
- 执行 PreparedStatement 对象: 执行器会执行 PreparedStatement 对象,并返回结果。
- 关闭 PreparedStatement 对象: 执行器会关闭 PreparedStatement 对象,释放资源。
- 提交事务: 执行器会提交当前的事务,将对数据库的更改持久化。
- 回滚事务: 执行器会回滚当前的事务,撤销对数据库的更改。
- 设置自动提交: 执行器可以设置自动提交模式,在这种模式下,每次执行 SQL 语句都会自动提交。
- 获取自动提交模式: 执行器可以获取当前的自动提交模式。
- 设置事务隔离级别: 执行器可以设置事务隔离级别,以控制事务的并发性。
- 获取事务隔离级别: 执行器可以获取当前的事务隔离级别。
- 设置超时时间: 执行器可以设置 SQL 语句的超时时间,如果 SQL 语句执行时间超过超时时间,则会抛出异常。
- 获取超时时间: 执行器可以获取当前的 SQL 语句超时时间。
- 关闭执行器: 执行器可以被关闭,以便释放资源。
使用执行器执行 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 操作,包括创建操作、读取操作、更新操作和删除操作。