MyBatis框架的使用及源码分析(十三) ResultSetHandler

在PreparedStatementHandler中的query()方法中,用ResultSetHandler来完成结果集的映射。

public <E> List<E> query(Statement statement, ResultHandler resultHandler) throws SQLException {  
   PreparedStatement ps = (PreparedStatement) statement;  
   ps.execute();  
   return resultSetHandler.<E> handleResultSets(ps);  
 }  
ResultSetHandler负责处理两件事:
(1)处理Statement执行后产生的结果集,生成结果列表
(2)处理存储过程执行后的输出参数
ResultSetHandler是一个接口,提供了两个函数分别用来处理普通操作和存储过程的结果:
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package org.apache.ibatis.executor.resultset;
 
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
 
/**
 * @author Clinton Begin
 */
public interface ResultSetHandler {
 
  <E> List<E> handleResultSets(Statement stmt) throws SQLException;//对普通查询到的结果转换
 
  void handleOutputParameters(CallableStatement cs) throws SQLException;//调用存储过程返回结果,将结果值放在参数中
 
}

ResultSetHandler的具体实现类是DefaultResultSetHandler,其实现的步骤就是将Statement执行后的结果集,按照Mapper文件中配置的ResultType或ResultMap来封装成对应的对象,最后将封装的对象返回。 

 

 

 

posted @   猪脚踏浪  阅读(1778)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示