
该系列文章针对 Mybatis 3.5.1 版本
核心处理层完成的工作就是 SQL 的执行,整个操作流程由几个组件类组成,这几个组建类的组合执行逻辑图如下:
图片来自《Mybatis 技术内幕》

如上图,Executor
扮演入口的角色,Executor
主要做了缓存、SQL 执行准备等辅助操作。
真正开始执行 SQL 查询操作,由 StatementHandler
来处理。
StatementHandle
执行操作如下:
构建
Statement
对象通过
ParameterHandler
结合Statement
拼接完整 SQL 语句通过
ResultSetHandler
处理Statement
执行SQL 的结果集,将其映射成对应的 Java 对象
本章关注 结果集处理 ResultSetHandler
ResultSetHandler
ResultSetHandler
实现类类图如下:

如图,ResultSetHandler
默认只有一个实现类 DefaultResultSetHandler
来看一下 ResultSetHandler
接口定义,相关代码如下:

在接口中定义了三种处理方法
结果集处理
游标处理
存储过程处理
这里以结果集处理进行展开。对应的是方法为 DefaultResultSetHandler#handleResultSets
,相关代码实现如下:

具体操作细节,这里不展开
上述代码对应的 JDBC 原生API,如下图中步骤四,结果集的处理

ResultSetHandler
相关实现就是对 上述代码的封装,将所有的手动设置操作,通过规约配置(如:结果集映射配置等),通过代码的方式自动设置。
End
文章转载自花好夜猿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




