讀mybatis源碼之十二:結果集處理器

主要是處理結果集,在聲明處理器基類中:

 this.resultSetHandler = configuration.newResultSetHandler(executor, mappedStatement, rowBounds, parameterHandler, resultHandler, boundSql);
對應configuration裏面:

 public ResultSetHandler newResultSetHandler(Executor executor, MappedStatement mappedStatement, RowBounds rowBounds, ParameterHandler parameterHandler,
      ResultHandler resultHandler, BoundSql boundSql) {
    ResultSetHandler resultSetHandler = mappedStatement.hasNestedResultMaps() ? new NestedResultSetHandler(executor, mappedStatement, parameterHandler, resultHandler, boundSql,
        rowBounds) : new FastResultSetHandler(executor, mappedStatement, parameterHandler, resultHandler, boundSql, rowBounds);
    resultSetHandler = (ResultSetHandler) interceptorChain.pluginAll(resultSetHandler);
    return resultSetHandler;
  }
resultSetHandler = (ResultSetHandler) interceptorChain.pluginAll(resultSetHandler);
表明在結果處理之前可以定義攔截處理,如解密數據處理
根據mappedStatement判斷是否是使用嵌套結果處理器還是使用快速處理器,如果是自定義了resultmap,嵌套就是用NestedResultSetHandler了
FastResultSetHandler和NestedResultSetHandler裏面就是獲取結果集然後根據結果處理類填充進結果集中


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章