Oracle分页查询SQL实现
首先看SQL 怎么写
select * from ( select a.*,ROWNUM rn from ( 最底层查询语句 ) a where ROWNUM <= #{endCol} ) where rn > #{startCol}
注意:Mybatis中 < 是小于号 >是大于号
当然 我们还需要 select count(*) 最底层查询语句来得到结果集的总数。需要注意的是,在底层查询语句中,一定要加order by语法进行结果排序,分页会毫无意义。序然后再换算出 endCol 和 startCol
换算代码如下:
//int totalRecord= 总条数; //计算分页 int intPS=Integer.parseInt(pageSize); int intPN= Integer.parseInt(pageNo); int intStartCol= intPS*(intPN-1)+1; int intEndCol= intPS*intPN-1+1; String startCol= String.valueOf(intStartCol); String endCol=String.valueOf(intEndCol); int totalPageNo=totalRecord%intPS>0?totalRecord/intPS+1:totalRecord/intPS; //在参数字典中加入分页的起始和结束条目号 paramsMap.put("startCol",startCol); paramsMap.put("endCol", endCol);