日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis-逻辑翻页

發布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis-逻辑翻页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MyBatis 里面有一個邏輯分頁對象RowBounds,里面主要有兩個屬性,offset 和limit(從第幾條開始,查詢多少條)。

我們可以在Mapper 接口的方法上加上這個參數,不需要修改xml 里面的SQL 語句。

public List<Blog> selectBlogList(RowBounds rowBounds);

使用:mybatis-standalone- MyBatisTest-testSelectByRowBounds()

int start = 10; // offset,從第幾行開始查詢 int pageSize = 5; // limit,查詢多少條 RowBounds rb = new RowBounds(start, pageSize); List<Blog> list = mapper.selectBlogList(rb); for(Blog b :list){System.out.println(b); }

它的底層其實是對ResultSet 的處理。它會舍棄掉前面offset 條數據,然后再取剩下的數據的limit 條。

DefaultResultSetHandler.java private void handleRowValuesForSimpleResultMap(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) throws SQLException {DefaultResultContext<Object> resultContext = new DefaultResultContext();ResultSet resultSet = rsw.getResultSet();this.skipRows(resultSet, rowBounds);while(this.shouldProcessMoreRows(resultContext, rowBounds) && !resultSet.isClosed() &&resultSet.next()) {ResultMap discriminatedResultMap = this.resolveDiscriminatedResultMap(resultSet,resultMap, (String)null);Object rowValue = this.getRowValue(rsw, discriminatedResultMap, (String)null);this.storeObject(resultHandler, resultContext, rowValue, parentMapping, resultSet);} }

很明顯,如果數據量大的話,這種翻頁方式效率會很低(跟查詢到內存中再使用subList(start,end)沒什么區別)。所以我們要用到物理翻頁。

?

總結

以上是生活随笔為你收集整理的mybatis-逻辑翻页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。