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来封装成对应的对象,最后将封装的对象返回。 

  • 相关阅读:
    Makefile Special Built-in Target Names(Makefile内建特殊目标)
    著名的变量命名规则
    bottle py
    LuCI中文手册
    LuCI
    LuCI2 (OpenWrt web 管理界面)
    LuCI2 (OpenWrt web user interface)
    OpenWrt netifd
    加载时间/性能
    Taming the asynchronous beast with ES7
  • 原文地址:https://www.cnblogs.com/zsg88/p/7572021.html
Copyright © 2011-2022 走看看