Mybatis可以通过传递RowBounds对象,来进行数据库数据的分页操作,然而遗憾的是,该分页操作是对ResultSet结果集进行分页,也就是人们常说的逻辑分页,而非物理分页。
RowBounds对象的源码如下:
publicclassRowBounds{
publicstaticfinalintNO_ROW_OFFSET=0;
publicstaticfinalintNO_ROW_LIMIT=Integer.MAX_VALUE;
publicstaticfinalRowBoundsDEFAULT=newRowBounds();
privateintoffset;
privateintlimit;
publicRowBounds(){
this.offset=NO_ROW_OFFSET;
this.limit=NO_ROW_LIMIT;
}
publicRowBounds(intoffset,intlimit){
this.offset=offset;
this.limit=limit;
}
publicintgetOffset(){
returnoffset;
}
publicintgetLimit(){
returnlimit;
}
}
对数据库数据进行分页,依靠offset和limit两个参数,表示从第几条开始,取多少条。也就是人们常说的start,limit。
下面看看Mybatis的如何进行分页的。
org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap()方法源码。
privatevoidhandleRowValuesForSimpleResultMap(ResultSetWrapperrsw,ResultMapresultMap,ResultHandler>resultHandler,RowBoundsrowBounds,ResultMappingparentMapping)
throwsSQLException{
DefaultResultContext