mysql数据库中使用mybatis的xml文件limit分页使用遇到的坑 您所在的位置:网站首页 条件分页sql mysql数据库中使用mybatis的xml文件limit分页使用遇到的坑

mysql数据库中使用mybatis的xml文件limit分页使用遇到的坑

2023-07-28 18:01| 来源: 网络整理| 查看: 265

数据库:MySQL数据库

因为初次使用mybatis-plus的分页查询,有点不太不习惯,于是决定自己写个分页查询。

mysql中的分页查询语句,是使用limit来分页的:

select * from tablename  limit a,b;//这句话的意思是从表tablename中查询,从第a+1条开始,共查询b条数据。

那么在这里,a和b的含义就要了解明白了,要不然就容易犯我的错(我刚开始理解的意思是,从a页开始,查询b条数据)。

概念清晰的话,涉及到分页,就需要了解几个计算公式了:

//总记录数=查询符合条件的总数 SELECT COUNT(1) FROM tablename WHERE 条件; Integer count ; //每页记录数=每页查询的条数,一般都是前端传过来的 Integer pageSize ; //当前页数=当前页数,一般都是前端传过来的想要查询的哪页 Integer currPage ; //总页数= (总记录数 + 每页记录数 - 1)/每页记录数 Integer totalPage = (count + pageSize - 1) / pageSize;

明白上面的几个概念之后,可以进行操作了。

请注意,sql语句不能写成:select * from tablename  limit currPage ,pageSize ;//这是错误的

应该计算一下select * from tablename  limit a,b;语句中的a(一定要注意,a不代表第几页,而是代表从a+1条开始),

a的计算:(当前页-1)* 每页记录数      ==>  (currPage - 1) * pageSize

这样的话你的分页就可以啦。

我的分页数据也是自己封装回去的,可以参考下,我是用的是fastjson:

JSONObject jsonObject = new JSONObject(); jsonObject.put("totalCount", count); jsonObject.put("pageSize", pageSize); jsonObject.put("totalPage", totalPage); jsonObject.put("currPage", currPage); jsonObject.put("list", list);

样例代码:

//列表数据 ...... String page = params.get("page").toString(); String limit = params.get("limit").toString(); int i = Integer.parseInt(page); int b = Integer.parseInt(limit); params.put("start",(i-1)*b); List list = dao.queryByList(params) //mybatis中的sql: select from student where teacher_id in #{item , jdbcType=INTEGER} and enabled = 1 limit ${start},${limit}; //总记录数 Integer count = aService.coutByIdList(idList); SELECT COUNT(1) FROM student WHERE hospital_id in #{item , jdbcType=INTEGER} and idcard = #{idcard} and enabled = 1 //每页记录数 Integer pageSize = Integer.parseInt(params.get("limit").toString()); //当前页数 Integer currPage = Integer.parseInt(params.get("page").toString()); //总页数 Integer totalPage = (count + pageSize - 1) / pageSize; JSONObject jsonObject = new JSONObject(); jsonObject.put("totalCount", count); jsonObject.put("pageSize", pageSize); jsonObject.put("totalPage", totalPage); jsonObject.put("currPage", currPage); jsonObject.put("list", list); return R.ok().put("data", jsonObject);

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有