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

  • 相关阅读:
    SpringMVC的自定义校验器
    Spring 国际化 异常:No message found under code 'message' for locale 'zh_CN'.
    《Redis实战》学习实践
    博客系统开发问题
    牛人博客
    Lambda表达式
    红黑树
    配置mysql的主从复制
    mysql 存储过程入门
    一个稍复杂的mysql存储过程
  • 原文地址:https://www.cnblogs.com/zsg88/p/7572021.html
Copyright © 2011-2022 走看看