暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[Mybatis]-[核心处理层]-ResultSetHandler

花好夜猿 2020-10-24
445


该系列文章针对 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论