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

  • 相关阅读:
    一个简单的CSS3+js 实现3D BOX
    jquery $.extend()扩展插件获取焦点或失去焦点事件
    菜单滑动
    全选反选
    纯css,编写菜单移入效果
    登录窗口抖动效果
    [WCF]WCF起航
    FastReport 数据过滤
    [Oracle]TRIGGER
    两种递归方法的比较
  • 原文地址:https://www.cnblogs.com/zsg88/p/7572021.html
Copyright © 2011-2022 走看看