av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

iBATIS分頁的一些理解

iBATIS分頁中有一個很吸引人的方法,queryForPaginatedList(java.lang.String id, int pageSize),可以返回 PaginatedList的對象,實現(xiàn)翻頁,剛才測試了一下PaginatedList,在1-2w行數(shù)據(jù)的時候還可以工作,但是在一個30w行的表里翻頁,一次select用了363.031second

忍不住看了一下源,發(fā)現(xiàn)iBATIS的分頁依賴于數(shù)據(jù)庫的jdbcDriver.

調(diào)用次序如下

 
 
 
  1. SqlMapClientImpl.queryForPaginatedList  
  2. ->SqlMapSessionImpl.queryForPaginatedList   
  3. ->SqlMapExecutorDelegate.queryForPaginatedList  
  4. ->GeneralStatement.executeQueryForList   
  5. ->GeneralStatment.executeQueryWithCallback  
  6. ->GeneralStatment.executeQueryWithCallback   
  7. ->SqlExecutor.executeQuery  
  8. ->SqlExecutor.handleMultipleResults()  

iBATIS分頁處理的函數(shù)如下

Java代碼

 
 
 
  1. private void handleResults(RequestScope request, ResultSet rs, int skipResults, int maxResults, RowHandlerCallback callback); throws SQLException {     
  2.     try {     
  3.       request.setResultSet(rs);;     
  4.       ResultMap resultMap = request.getResultMap();;     
  5.       if (resultMap != null); {     
  6.         // Skip Results     
  7.         if (rs.getType(); != ResultSet.TYPE_FORWARD_ONLY); {     
  8.           if (skipResults > 0); {     
  9.             rs.absolute(skipResults);;     
  10.           }     
  11.         } else {     
  12.           for (int i = 0; i < skipResults; i++); {     
  13.             if (!rs.next();); {     
  14.               return;     
  15.             }     
  16.           }     
  17.         }     
  18.     
  19.         // Get Results     
  20.         int resultsFetched = 0;     
  21.         while ((maxResults == SqlExecutor.NO_MAXIMUM_RESULTS || resultsFetched < maxResults); && rs.next();); {     
  22.           Object[] columnValues = resultMap.resolveSubMap(request, rs);.getResults(request, rs);;     
  23.           callback.handleResultObject(request, columnValues, rs);;     
  24.           resultsFetched++;     
  25.         }     
  26.       }     
  27.     } finally {     
  28.       request.setResultSet(null);;     
  29.     }     
  30.   }   

返回的PaginatedList實際上是PaginatedDataList類的對象,每次翻頁的時候最后都會調(diào)用

Java代碼

 
 
 
  1. private List getList(int idx, int localPageSize); throws SQLException {     
  2.    return sqlMapExecutor.queryForList(statementName, parameterObject, (idx); * pageSize, localPageSize);;     
  3.  } 

這個方法,可見iBATIS的分頁機制要看jdbcDriver如何實現(xiàn)以及是否支持rs.absolute(skipResults)。

iBATIS分頁的情況就介紹到這里,希望對你有所幫助。

【編輯推薦】

  1. Struts2.0+ibatis2.3整合實例實現(xiàn)服務層及 Struts
  2. Struts2.0+ibatis2.3整合實例實現(xiàn)UI層淺析
  3. iBATIS入門程序六大步詳解
  4. iBATIS DAO事務淺析
  5. iBATIS使用$和#的一些理解

本文標題:iBATIS分頁的一些理解
標題來源:http://uogjgqi.cn/article/dhjjeod.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流