zoukankan      html  css  js  c++  java
  • 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是一个接口,提供了两个函数分别用来处理普通操作和存储过程的结果:
     
    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来封装成对应的对象,最后将封装的对象返回。 

  • 相关阅读:
    阻止JavaScript事件冒泡传递<转>
    小温谈数据库优化数据库设计篇
    名言集合
    SQL Server中获得EXEC的值<转>
    WIN2008 64位系统配置PHP的方法
    陪伴我作为程序员的9句名言<转>
    C# 的快捷键汇总(一)
    使用VB.NET开发复合控件
    C#写SQL SERVER2008存储过程
    c#图像处理入门
  • 原文地址:https://www.cnblogs.com/zsg88/p/7572021.html
Copyright © 2011-2022 走看看