mybatis-逻辑翻页
生活随笔
收集整理的這篇文章主要介紹了
mybatis-逻辑翻页
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MyBatis 里面有一個邏輯分頁對象RowBounds,里面主要有兩個屬性,offset 和limit(從第幾條開始,查詢多少條)。
我們可以在Mapper 接口的方法上加上這個參數(shù),不需要修改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 條數(shù)據(jù),然后再取剩下的數(shù)據(jù)的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);} }很明顯,如果數(shù)據(jù)量大的話,這種翻頁方式效率會很低(跟查詢到內(nèi)存中再使用subList(start,end)沒什么區(qū)別)。所以我們要用到物理翻頁。
?
總結(jié)
以上是生活随笔為你收集整理的mybatis-逻辑翻页的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis-翻页
- 下一篇: mybatis-物理翻页