成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iBATIS分頁的一些理解

開發 后端
iBATIS分頁的一些理解向我們介紹了在使用iBATIS分頁時的一點體會和大家分享。

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

忍不住看了一下源,發現iBATIS的分頁依賴于數據庫的jdbcDriver.

調用次序如下

  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分頁處理的函數如下

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類的對象,每次翻頁的時候最后都會調用

Java代碼

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

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

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

【編輯推薦】

  1. Struts2.0+ibatis2.3整合實例實現服務層及 Struts
  2. Struts2.0+ibatis2.3整合實例實現UI層淺析
  3. iBATIS入門程序六大步詳解
  4. iBATIS DAO事務淺析
  5. iBATIS使用$和#的一些理解
責任編輯:仲衡 來源: JavaEye
相關推薦

2009-07-21 09:29:27

iBATIS使用

2022-12-27 09:56:34

架構系統

2017-04-08 17:12:36

設計模式抽象策略模式

2012-06-15 11:02:31

架構師

2022-09-01 11:02:42

前端工具

2013-08-21 13:47:29

PhoneUDIDUUID

2013-07-18 16:16:51

2009-12-01 09:06:36

VS2003 ajax

2009-11-27 13:04:16

VS2005遠程調試

2020-09-29 10:42:30

kurbernetes開發云原生

2009-07-17 09:24:45

iBATIS分頁

2009-07-20 16:18:54

iBatis分頁Hibernate式的

2013-03-29 13:17:53

XCode調試技巧iOS開發

2011-07-13 09:13:56

Android設計

2011-03-15 17:46:43

2012-05-21 10:13:05

XCode調試技巧

2009-06-18 14:54:52

Spring AOP

2009-09-21 17:46:25

Hibernate數據

2011-06-01 16:50:21

JAVA

2013-07-02 09:43:02

編程策略
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久秋霞不卡 | 91福利网 | 看黄在线 | 国产日韩一区二区三免费高清 | 亚洲国产成人精品女人 | 中文字幕av一区 | 久久久久99 | 日韩久久久久 | 国产一区二区中文字幕 | 超碰在线人人 | 97人人爱| 国产最好的av国产大片 | 欧美日韩精品一区 | 精品乱人伦一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 日日碰狠狠躁久久躁96avv | 成人免费视频网站在线观看 | 亚洲一区精品视频 | 99亚洲精品| 久热免费在线 | 免费黄色av | 久久在线看 | 国产精品高潮呻吟久久av野狼 | 一级美国黄色片 | 一级毛片免费完整视频 | 国产精品一区二区三区四区 | 欧美福利 | 成人区精品一区二区婷婷 | 自拍视频网 | 国产精品久久久久aaaa九色 | 华丽的挑战在线观看 | 91精品国产欧美一区二区成人 | 日韩一区二区三区av | 日日操夜夜操视频 | 精品一区二区三区免费毛片 | 一a级片| 看毛片的网站 | 亚洲精品亚洲人成人网 | 国产高清在线精品一区二区三区 | 欧美一级在线 | 欧美日韩高清在线观看 |