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