数据库分页查询

mysql分页查询: 

是用limit函数

取前5条数据:select * from table_name limit 0,5  //表示从下标为0位置,开始数5条数据。

或者select * from table_name limit 5,默认从0开始计数

查询第11到第15条数据

select * from table_name limit 10,5

limit关键字的用法:

LIMIT [offset,] rows

offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

 

例子:写一个分页查询的sql,要求实现:从start位置开始,数limit条数据。接下来我们只需计算出start、limit的坐标,然后拼接到sql语句中就可以了

在java代码中对前台参数进行处理:

stockParam.setPage(page);   //page:从第几页开始
stockParam.setLimit(limit);     //limit:  每页显示多少条数据,相当于pageSize,count属性
stockParam.setStart((page-1)*limit);   //start:计算出起始坐标位置,也就是说,从start位置,开始数limit条数据
List<Stock> stockList = stockBusinessB.getStock(stockParam);
Integer count = stockBusinessB.count(stockParam);

limit:就是前台传递过来的参数,start=(page-1)*limit,此处不需要加1,因为初始行的坐标为0,接下来只需要将计算好的start、limit拼接到sql语句中即可。

所以,最终在mapper.xml中的sql如下:

select * from table
where name="XX" and age>10
ORDER BY create_timestamp  DESC
LIMIT  #{start},  #{limit}  //从start位置开始,数limit条数据

  

oracle分页查询:

 需求:从第page页开始,每页查询pageSize条数据

//补充:首先需要在java代码中,计算出min、max,然后在拼接到sql语句中即可

  pageSize: 每页的条目数

  page:第几页

  min:(page-1)*pageSize + 1
  max: page * pageSize

  

oracle中分页查询有伪列ROWNUM的概念,得分三步:先排序,再编号,最后取范围 

    SELECT * 
    FROM ( 
      SELECT ROWNUM rn, t.*
      FROM (
        SELECT ename, empno, salary, job  --此处的select决定所要查的数据,外面的select都是固定的。
        FROM emp
        ORDER BY salary DESC
      )t
    )
    WHERE rn BETWEEN min AND max

  

 

    

原文地址:https://www.cnblogs.com/quan-coder/p/6308699.html