【Mybatis】mybatis如何实现分页

mysql分页功能原理

实现分页必要条件

  1. 必须知道某一页哪里开始哪里结束
  2. 必须知道页面的大小,也就是指定每页要显示多少条数据量

mysql分页的过程

注意:mysql的计数是从0开始的,也就是说第一条数据对应的下标应该为0

  1. 假设我们现在需要一页显示10条数据,
  2. 那么第0页的10条数据的编号就是 0 1 2 3 4 5 6 7 8 9
  3. 那么第1页的数据的编号是10 11 12 13 14 15 16 17 18 19
  4. 那么第2页的数据编号就是20 21 22 23 24 25 26 27 28 29
  5. 那么第n页的数据编号就是10*n … (n+1)*10-1

可以很明显的看到,第n页的第一条数据的编号就是 n*页面大小

mysql的limit语法

limit 语法

limit 开始 多少条(n, m)

mysql分页的实现主要依赖于limit语法

mysql的分页实现

  1. 其实也就是

    select *
    from xxx_table
    limit 页数*页面大小 页面大小
    
  2. 记录的总条数(total)

    select count(1)
    from xxx_table;
    
  3. 页面大小(pageSize)就直接接收用户所发送的pageSize

  4. 总页数(totalPages)

    totalPage的计算
    1. 当 total/pageSize 的余数等于0时,总页数(totalPage)就是total/pageSize
    2. 当 total/pageSize 无法整除,余数不等于0时,总页数就是total/pageSize + 1
    
  5. 以上。

mybatis 实现分页

1. Dao层

/*
* 分页查询
* */
public List<JotterArticle> selectByPage(Map<String,Object> params);/*
* 查询总条数
* */
public int total();

2.Dao层对应的.xml文件实现

<!--分页查询-->
<select id="selectByPage" resultType="JotterArticle">select *from jotter_articlelimit #{pageNum},#{pageSize}
</select><!--查询总条数-->
<select id="total" resultType="Integer">select count(1)from jotter_article
</select>

3. Service层

Service接口

/** 分页查询* */
public PageResult selectByPage(int pageNum,int PageSize);

4.Service实现类

@Override
public PageResult selectByPage(int pageNum, int pageSize) {Map<String,Object> params = new HashMap<>();// 将参数传递进去params.put("pageNum",(pageNum-1)*pageSize);params.put("pageSize",pageSize);// 调用Dao层的selectByPage方法进行查询List<JotterArticle> jotterArticleList = jotterArticleMapper.selectByPage(params);// PageResult类就是为了统一封装数据的一个类PageResult pageResult = new PageResult();pageResult.setPageNum(pageNum);pageResult.setPageSize(pageSize);pageResult.setContent(jotterArticleList);pageResult.setTotal(jotterArticleMapper.total());return pageResult;
}

5. Controller层

@CrossOrigin
@GetMapping("/api/article/{pageNum}/{pageSize}")
public PageResult getPageJotterArticle(@PathVariable("pageSize") int pageSize, @PathVariable("pageNum") int pageNum){return jotterArticleService.selectByPage(pageNum,pageSize);
}

【Mybatis】mybatis如何实现分页相关推荐

  1. rowbounds分页oracle,Oracle使用MyBatis中RowBounds实现分页查询功能

    Oracle中分页查询因为存在伪列rownum,sql语句写起来较为复杂,现在介绍一种通过使用MyBatis中的RowBounds进行分页查询,非常方便. 使用MyBatis中的RowBounds进行 ...

  2. spring boot整合mybatis+通用mapper+pagehelper分页插件

    spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...

  3. SpringBoot2.0 基础案例(10):整合Mybatis框架,集成分页助手插件

    一.Mybatis框架 1.mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获 ...

  4. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

  5. Spring Boot mybatis HashMap +layui 通用分页

    背景: mybatis 常用数据查询的方法都是先建实体类,再建Mapper,最后写Service,如果只是单纯的去查询数据显示,这样操作太麻烦.本文就以mybatis +layui创建通用分页类,简化 ...

  6. MyBatis使用PageHelper排序分页

    文章目录 MyBatis使用PageHelper排序分页 前言 排序分页 使用PageHelper排序分页 添加PageHelper Spring Boot依赖 新增一个列表查询的方法 使用PageH ...

  7. 关于mybatis的逆向工程中分页配置

    关于mybatis的逆向工程中分页配置 因为在使用PageHelper插件的时候出现了异常的问题,所以考虑在数据库查询的时候直接进行分页操作,也就是在配置中添加limit,首先把我遇到的分页问题描述一 ...

  8. SpringBoot整合mybatis+mybatis分页插件

    第一步:相关依赖 <!--web,servlet引入--> <dependency><groupId>org.springframework.boot</gr ...

  9. Mybatis 是如何进行分页的?分页插件的原理是什么?

    Mybatis 是如何进行分页的?分页插件的原理是什么? Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页.可以在 sql 内直 ...

  10. mybatis动态查询(分页排序搜索)+分解关联查询+Logback 日志配置(打印sql到控制台)+mybatis新增记录后返回自增的id。批量=11/2~11/20

    一.mybatis动态查询(分页排序搜索) mybatis框架分页实现,有几种方式,最简单的就是利用原生的sql关键字limit来实现,还有一种就是利用interceptor来拼接sql,实现和lim ...

最新文章

  1. hive编程指南电子版_第三篇|Spark SQL编程指南
  2. OpenVINO 部署 YOLOv5 转换IR文件
  3. Java:POI方式实现Word转html/htm
  4. TP查看已部署的TP框架的版本
  5. praying,blessing,wishing
  6. Gartner最新发布:影响2022年基础设施和运营重大趋势
  7. l298n电机哪一端为正_汽车维修要知道的几个答案,交流发电机、调节器有什么功用?...
  8. STP:生成树协议解决网络冗余问题
  9. php显示地址栏携带的错误信息_php-fpm搭建及加固
  10. FindWindowEx的应用
  11. 【GCN】2021年,我终于决定入门GCN
  12. [51单片机] 串口通讯 简单通信
  13. java list加入listview_将卡添加到ListView
  14. 关于html的英文参考文献,英文参考文献标准格式
  15. android使用谷歌插件下载图片,Image Downloader:批量图片下载
  16. Html5网页录音,js录音mp3
  17. 为每天节省两小时-华芸AS4004T万兆NAS搭建测试
  18. 苏世民的54条人生成功经验
  19. EARTH DATA网站注册走过的坑
  20. 根据中文名字首字母进行分组

热门文章

  1. 【转载】 下个月,Java 开启收费模式!
  2. 空间两条直线的最短距离及最近点计算
  3. 惊闻企业Web应用生成平台 活字格 V4.0 免费了,不单可视化设计器免费,服务器也免费!...
  4. 中国海上风电行业十四五运维策略及供需形势分析报告2021-2027年
  5. 武汉ACM集训——贪心-7
  6. 什么是微信商城?如何微商城?
  7. Vuetify学习记录(三)-- v-data-table
  8. pycharm安装与配置Pyqt5
  9. 我作为大学生刚出校园实习的感受
  10. 使用Django在执行python manage.py startapp myApp创建应用