说到手写一个分页sql,大家都会写,以oracle为例子
基本sql,5到10行数据:select rownum,t.* from (select rownum rw,t1.* from table where rw < 10)t where rw >5
那么结合代码实现的呢,下面我结合代码总结了一下基本简单的分页思想,分页首先定义几个必须的参数:
pageCount 总页数
pageNum当前页
pageSize每页显示数据量
startNum开始条数
endNum结束条数
入参给传的pageNum,pageSize
- 1.前端传参pageNum、pageSize初始化值
//如果前端传参当前页为空,则默认为1或者其他, 否则当前页就是前端传值的页数
if (pageNum == null){
pageNum = 1;
} else{
pageNum = pageNum;
}
//如果前端传参每页显示的数量为空,则默认为10或者其他, 否则当前页就是前端传值的数量
if(pageSize == null){
pageSize = 10;
}else{
pageSize = pageSize;
}
- 2.计算总的条数 pageCount
pageCount 通过sql计算出总数 count(1)。。例如select count(1) from table
- 3.计算数据的开始的条数startNum和结束的条数endNum
startNum = (pageNum - 1) * pageSize;
endNum = (pageNum * pageSize) > pageCount ? pageCount : (pageNum * pageSize);
- 4.sql分页查找
select rownum,p.* from (select rownum rw,a.* from table a where rw < = endNum)p where rw > startNum
完美
eg:
strSqlStatement = " SELECT * FROM ( " + "Select RowNum As LineNum,T.* From ( "
+ "Select * From 表名 m Where " + strWhere + ") T Where RowNum<=" + intEndNum + ") Where LineNum>"
+ intStartNum + " Order By enquiryno DESC";