ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL中使用LIMIT分页

2020-05-08 14:05:27  阅读:560  来源: 互联网

标签:10 pageNum 分页 pageSize limit MySQL LIMIT table select


需求:客户端通过传递pageNum(页码)和pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据。

  我们知道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伪代码是:select * from table limit (pageNum-1)*pageSize,pageSize。总而言之,我们只需要告诉数据库要从第几行开始拿多少条数据就行了。   但是,limit语句不支持计算,因此,需要从外部传参(pageNum-1)*pageSize的计算结果,即在Java中计算出来。令rowIndex = (pageNum-1)*pageSize,rowIndex常用的计算方法如下:
//计算行号
public static int getRowIndex(int pageNum, int pageSize){
    return (pageNum> 0) ? (pageNum- 1) * pageSize : 0;
}

看一段按照开始时间,和结束时间,分页查询数据的Mybatis,SQL语句。

  <select id="getAllUsersByTheTwoTimeThree" resultMap="BaseResultMap">
         select studentid,telephone,username,vxnumber,othermsg,
         requiretype,requireA,requireB,examtime,creator,followstate,createTime,updateTime,nextupdateTime,content
         from user
        where 1 = 1
        <if test="beginTime!=null and endTime!=null">
          AND createTime BETWEEN STR_TO_DATE(#{beginTime},'%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(#{endTime},'%Y-%m-%d %H:%i:%s')
        </if>
          order by createTime DESC limit ${(currentPage-1)*pageSize},${pageSize}
    </select>

mybatis 的 sql写法是

limit ${(currentPage-1)*pageSize},${pageSize}

  

标签:10,pageNum,分页,pageSize,limit,MySQL,LIMIT,table,select
来源: https://www.cnblogs.com/EarlyBridVic/p/12850119.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有