一:分页需求:
客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道mysql数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们自己的分页语句,具体的分析如下:
比如:
查询第1条到第10条的数据的sql是:select * from table limit 0,10; ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第10条到第20条的数据的sql是:select * from table limit 10,20; ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;
查询第20条到第30条的数据的sql是:select * from table limit 20,30; ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;
二:通过上面的分析,可以得出符合我们自己需求的分页sql格式
mysql分页:select * from 表 limit (pageNo-1)*pageSize,pageSize;
oracle分页:select a.* (select 表.*,rowum rn from 表) a where rn>(pageNo-1)*pageSize and rn <=pageNo*pageSize;
三、
在MyBatis中LIMIT之后的语句不允许的变量不允许进行算数运算,会报错。
LIMIT (#{pageNo}-1)*#{pageSize},#{pageSize}; // 错误
LIMIT ${(pageNo-1)*pageSize},${pageSize}; (正确)
四、使用分页工具类
mybatisplus分页工具类 IPage
分页查询优化:https://www.jianshu.com/p/7d1b6db64a8f
新闻热点
疑难解答