【sql】分页的sql以及结合代码的具体实现

说到手写一个分页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";

 

你可能感兴趣的:(技术--开发类)