Mybatis----分页

1.什么是分页

分页(Pagination)是指将大量数据划分为多个页面进行展示的一种技术手段。在数据量较大的情况下,将所有数据一次性显示在页面上会导致加载时间过长和页面过于庞大,影响用户体验和系统性能。分页技术通过划分数据为多个页面,并提供导航控制,使用户可以按需加载和浏览数据。

通常的分页方式是根据指定的每页显示数量,将数据分为多个独立的页,每页呈现一定数量的数据。用户可以通过页码或者上一页、下一页等导航控件来切换不同的页。常见的分页信息包括当前页码、总页数、总记录数等。

如上,当我们在百度上查询的时候,查询结果通常分页展示。而在mybatis中,我们可以使用两种方式实现分页,

一是通过sql语句的limit关键字实现,二是通过Mybatis插件 PageHelper实现

2.sql语句实现分页查询

select * from account limit 起始位置  每页显示数量

如上,我们需要两个关键参数,查询的起始位置,每页显示的最大数量。

测试起始位置为2,每页显示数量最大为3

映射文件:

<select id="selectByPage" resultMap="AccountMap">select * from account limit #{offset} ,#{pageNums};
</select>

mapper接口对应的方法:

List<Account> selectByPage(@Param("offset") int offset,@Param("pageNums") int pageNums);

测试方法:

@Test
public void sqlTest3(){AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);List<Account> accounts = accountMapper.selectByPage(2, 3);System.out.println(accounts);
}

初始数据:

查询结果:

3. PageHelper实现分页

PageHelper 是一个非常流行的 MyBatis 分页插件,它能够简化基于 MyBatis 的分页查询操作,并提供了丰富的分页查询功能。使用 PageHelper 可以在 MyBatis 中非常便捷地实现分页查询。

PageHelper 提供的功能包括:

  1. 自动进行分页查询,无需手动编写分页 SQL 语句。
  2. 支持多种数据库,如 MySQL、Oracle、SQL Server 等。
  3. 提供丰富的分页参数设置,如页码、页面大小、是否计算总数等。
  4. 支持排序功能,可以方便地指定排序字段和排序方式。

1.导入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.2</version>
</dependency>

2.配置分页拦截器

mybatis核心配置文件中,注意标签的顺序

<plugins><plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

3.编写映射文件

<select id="selectByPageHelper" resultMap="AccountMap">select * from account
</select>

4.编写接口

List<Account> selectByPageHelper();

5.测试

@Test
public void sqlTest4(){AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);//开启分页功能PageHelper.startPage(1, 3);//从第一页开始,页面中条数最大数量为3List<Account> accounts = accountMapper.selectByPageHelper();System.out.println(accounts);
}

6.结果

在这个实例中我们不用在关系sql中limit关键字,PageHelper已经帮我们实现了,只需开启分页功能。

注意,第一条数据是从0开始的。

4.PageInfo获取分页详细信息

在 MyBatis 分页插件 PageHelper 中,PageInfo 对象是一个非常便利的类,用于包装分页后的结果,提供了获取分页详细信息的各种方法。

@Test
public void sqlTest4(){AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);//开启分页功能PageHelper.startPage(1, 3);List<Account> accounts = accountMapper.selectByPageHelper();PageInfo<Account> pageInfo=new PageInfo<>(accounts);//只需传入System.out.println(pageInfo.toString());System.out.println(accounts);
}

  • getList():获取当前页的数据列表。
  • getTotal():获取总记录数。
  • getPages():获取总页数。
  • getPageNum():获取当前页的页码。
  • getPageSize():获取每页显示的条目数。
  • isHasNextPage():判断是否有下一页。
  • isHasPreviousPage():判断是否有前一页。
  • getNavigatepageNums():获取所有导航页的页码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/427807.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高质量简历模板网站,免费、免费、免费

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

【GitHub项目推荐--这个「元宇宙编程」项目开源了】【转载】

推荐一个开源项目&#xff0c;它能帮助你沉浸式编程。这是一个基于 Linux 的 VR 桌面开源项目&#xff1a;Simula &#xff0c;这是一个运行在 Godot 之上的 Linux 虚拟现实窗口管理器. Godot&#xff1a;是一款制作游戏的软件&#xff0c;通过基于节点的架构来设计 2D 和 3D …

GIS项目实战06:超详细Node.js安装及系统环境配置

简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。 Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境&#xff0c;基于 Google 的 V8 引擎&#xff0c;V8 引擎执行 Javascript 的速度非常快&#xff0c;性能…

鲲鹏微认证——openEuler开源操作系统迁移实践

文章目录 为什么要系统搬迁为什么选择欧拉欧拉系统迁移概述实施路径工具实战 为什么要系统搬迁 2020年12月&#xff0c;CentOs作为由开源社区免费提供的操作系统&#xff0c;宣布将对CentO58于2021年底停止服务&#xff0c;CentO57则于2024年6月底停止服务。 这将直接导致操作…

建议CSDN不要这样吃人xue馒头

程序员裁员潮&#xff1a;技术变革下的职业危机 2023年以来&#xff0c;谷歌、阿里巴巴各个科技公司都在裁员&#xff0c;程序员的日子也不好过。 讨论在技术变革下&#xff0c;裁员对于程序员的影响到底有多大&#xff0c;是非常有意义的话题&#xff0c;但是为什么要用“一…

Kubernetes/k8s之HPA,命名空间资源限制

Horizontal Pod Autoscaling:po的水平自动伸缩 这是k8s自带的模块 pod占用cpu比例达到一定的阀值&#xff0c;会触发伸缩机制。 根据cpu的阀值触发伸缩机制 replication controller 副本控制器 控制pod的副本数 deployment controller 节点控制器 部署pod hpa控制副本的数…

cmd输入python直接弹出windows应用商店

明明已经安装好了python&#xff0c;并且也确认配置好了python的环境变量&#xff0c;但是在cmd里输入python后&#xff0c;直接弹出windows商店&#xff0c;python获取界面&#xff0c;其实只需要关闭系统里的应用执行别名设置&#xff0c;最近出来的电脑系统里是自带开启了py…

初探 ret2libc

文章目录 ret2libc构建思路x86amd64第一阶段获取 libc 版本 ret2libc 这次我们又碰到新问题了&#xff0c;假如程序没有 system 函数和 /bin/sh 怎么办? system&#xff0c;/bin/sh 可以去 libc 里找&#xff0c;libc是Linux新系统下的C函数库&#xff0c;其中就会有system(…

macOS磁盘管理工具Paragon Hard Disk Manager,轻松且安全的改变磁盘分区

Paragon Hard Disk Manager mac版是Macos上一款磁盘管理工具&#xff0c;可以帮助你轻松而且安全的随意改变磁盘分区的大小和各种分区参数&#xff0c;作为mac磁盘分区工具也是游刃有余&#xff0c;同时在找回数据的时候也非常容易&#xff0c;并且不会损坏原来的数据&#xff…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第3章 k邻近邻法

文章目录 第3章 k邻近邻法3.1 k近邻算法3.2 k近邻模型3.2.1 模型3.2.2 距离度量3.2.3 k值的选择3.2.4 分类决策规则 3.3 k近邻法的实现&#xff1a;kd树3.3.1 构造kd树3.3.2 搜索kd树 算法实现课本例3.1iris数据集scikit-learn实例kd树:构造平衡kd树算法例3.2 《统计学习方法&a…

生产力工具|卸载并重装Anaconda3

一、Anaconda3卸载 &#xff08;一&#xff09;官方方案一&#xff08;Uninstall-Anaconda3-不能删除配置文件&#xff09; 官方推荐的方案是两种&#xff0c;一种是直接在Anaconda的安装路径下&#xff0c;双击&#xff1a; &#xff08;可以在搜索栏或者使用everything里面搜…

ClickHouse与Doris数据库比较

概述 都说“实践是检验真理的唯一标准”&#xff0c;光说不练假把式&#xff0c;那么本文就通过实际的测试来感受一下Doris和clickhouse在读写方面的性能差距&#xff0c;看看Doris盛名之下&#xff0c;是否真有屠龙之技&#xff1b;clickhouse长锋出鞘&#xff0c;是否敢缚苍…