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來封裝成對應的對象,最后將封裝的對象返回。 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM