Nodejs+vue大学生求职招聘录取微信小程序

核心内容摘要

在大厂内部广泛传播的内容,谨慎传播 ~
DAMO-YOLO开源大模型部署:无需Streamlit,bash一键启动指南

南北阁Nanbeige 4.1-3B惊艳效果展示:CoT折叠面板+流式光标动画+响应延迟实测

SqlSession初始化与获取SqlSession是MyBatis的核心对象用于执行SQL操作。

SqlSessionFactory是创建SqlSession的工厂类通过build()方法初始化并通过openSession()方法获取SqlSession。

SqlSessionFactoryBuilder是构建SqlSessionFactory的工具类负责解析配置文件并创建SqlSessionFactory。

示例代码java复制// 构建 SqlSessionFactory public SqlSessionFactory build(InputStream inputStream) { Configuration configuration new Configuration(); // 创建配置对象 XMLConfigBuilder xmlConfigBuilder new XMLConfigBuilder(inputStream); // 解析配置文件 configuration xmlConfigBuilder.parse(); // 解析 XML 配置 return new DefaultSqlSessionFactory(configuration); // 创建 SqlSessionFactory }

SqlSession中的select方法SqlSession提供了selectOne()和selectList()等方法用于执行查询操作。

这些方法最终调用select()方法通过Executor执行SQL查询。

示例代码java复制public E ListE selectList(String statement, Object parameter) { Executor executor this.configuration.newExecutor(this, ExecutorType.SIMPLE); // 创建 Executor return executor.query(statement, parameter); // 执行查询 }

Executor接口与query()方法Executor是MyBatis的核心执行器负责执行SQL操作。

常见的Executor实现包括SimpleExecutor每次执行SQL时都会创建新的PreparedStatement。

ReuseExecutor重用PreparedStatement。

BatchExecutor批量执行SQL。

query()方法通过StatementHandler和ResultSetHandler处理SQL的准备、执行和结果映射。

示例代码java复制public ListObject query(String statement, Object parameter) throws SQLException { StatementHandler handler configuration.newStatementHandler(); // 创建 StatementHandler Statement stmt handler.prepare(connection, transaction); // 准备 SQL ResultSetHandler resultSetHandler configuration.newResultSetHandler(); // 创建 ResultSetHandler return resultSetHandler.handleResultSets(stmt); // 处理结果集 }

StatementHandler的工作原理StatementHandler负责SQL的准备工作包括创建PreparedStatement。

设置SQL参数。

执行SQL语句。

prepare()方法用于预编译SQL语句并为查询设置参数。

ParameterHandler的作用ParameterHandler负责将Java对象中的参数绑定到SQL语句中。

setParameters()方法根据SQL语句中参数的顺序通过PreparedStatement将Java参数绑定到SQL中。

ResultSetHandler的工作原理ResultSetHandler负责处理SQL执行后的结果集将ResultSet中的数据映射到Java对象中。

它会将每一行数据从ResultSet中提取出来并根据MappedStatement的配置映射为目标对象。

MappedStatement的配置与SQL映射MappedStatement是MyBatis中用于封装SQL语句和映射信息的对象。

它包含了SQL语句。

查询参数类型。

结果类型。

MappedStatement由SqlSession传递给Executor执行。

事务管理与Transaction接口MyBatis使用Transaction接口管理事务负责开启、提交和回滚事务。

Transaction接口的实现由数据库连接控制MyBatis会根据配置使用不同的事务管理方式如JDBC事务、管理事务等。

自动生成SQL和参数绑定的流程MyBatis支持动态SQL语句的生成例如通过if、choose等标签生成不同的SQL语句。

在执行时SqlSession会根据MappedStatement的配置动态构建SQL。

ParameterHandler会在执行SQL时根据用户输入的参数生成最终的SQL语句。

总结MyBatis通过以下流程完成SQL的执行SqlSessionFactory初始化通过SqlSessionFactoryBuilder解析配置文件创建SqlSessionFactory。

SqlSession获取通过SqlSessionFactory的openSession()方法获取SqlSession。

SQL执行SqlSession调用Executor的query()方法。

Executor通过StatementHandler准备SQL通过ParameterHandler绑定参数通过ResultSetHandler处理结果集。

事务管理通过Transaction接口管理事务。

补充说明动态SQLMyBatis支持通过XML中的if、choose、when、otherwise等标签动态生成SQL语句。

这些标签允许根据条件动态拼接SQL提高灵活性。

缓存机制MyBatis提供了两级缓存一级缓存SqlSession级别的缓存同一个SqlSession中重复执行相同的查询语句时会直接从缓存中获取结果。

二级缓存Mapper级别的缓存多个SqlSession可以共享缓存数据。

插件机制MyBatis支持插件Interceptor可以通过插件机制拦截和修改Executor、StatementHandler、ResultSetHandler等组件的行为实现日志记录、性能监控等功能。

成色18k1.8811.7v18K1.8811.7V-成色应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123