首页 > 数据库 > MySQL > 正文

MySql根据当前页pageNo、显示条数pageSize,实现分页查询的SQL

2024-07-24 12:36:26
字体:
来源:转载
供稿:网友

一:分页需求:

客户端通过传递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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表