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);//从第一页开始,页面中条数最大数量为3
    List<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():获取所有导航页的页码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac Monitor:一款为macOS安全研究量身定制的高级独立系统监控工具

关于Mac Monitor Mac Monitor是一款功能强大的高级独立系统安全监控工具&#xff0c;该工具专为macOS安全研究、恶意软件分类和系统故障排除而设计&#xff0c;主要基于Apple Endpoint Security&#xff08;ES&#xff09;实现其功能。 Mac Monitor能够收集各种类型的系统事件…

量化交易学习2(因子研究)

因子有效性检验 参考1 参考2 在多因子研究框架中&#xff0c;因子的有效性检验是不可避免的工作&#xff0c;其本质是衡量一个因子的选股能力。 目前学术界和业界普遍使用的两种方法&#xff1a; 相关性检验 因子的相关性检验即检验单因子和收益率之间是否存在相关性 IC值 计…

搜狐新闻客户端使用Kotlin之后对JSON解析框架的探索

本文字数&#xff1a;7488字 预计阅读时间&#xff1a;45分钟 01 引言 自2017年Google发布Kotlin语言之后&#xff0c;Android开发由原来的Java开始向Kotlin过度&#xff0c;目前绝大部分Android开发岗位基本要求就是熟练使用Kotlin。事实上&#xff0c;很多有着多年历史的项目…

单片机学习笔记---矩阵键盘

目录 矩阵键盘的介绍 独立按键和矩阵按键的相同之处&#xff1a; 矩阵按键的扫描 代码演示 代码模块化移植 Keil自定义模板步骤&#xff1a; 代码编写 矩阵键盘就是开发板上右下角的这个模块 这一节的代码是基于上一节讲的LCD1602液晶显示屏驱动代码进行的 矩阵键盘的介…

主成分分析(PCA)Python

实际问题研究中&#xff0c;常常遇到多变量问题&#xff0c;变量越多&#xff0c;问题往往越复杂&#xff0c;且各个变量之间往往有联系。于是&#xff0c;我们想到能不能用较少的新变量代替原本较多的旧变量&#xff0c;且使这些较少的新变量尽可能多地保留原来变量所反映的信…

Idea Community社区版如何添加Run Dashboard

最近在学习spring cloud&#xff0c;跟着视频添加run dashboard&#xff0c;发现里面介绍的方法无法适用于idea community(社区版)。 然后自己研究了一下&#xff0c;成功添加&#xff0c;下面分享自己的方法。 如图&#xff0c;我的项目里添加了两个module&#xff0c;我想通…

【c语言】详解操作符(下)

前言&#xff1a; 在上文中&#xff0c;我们已经学习了 原码、反码、补码、移位 操作符、移位操作符、位操作符、逗号表达式、下标访问[ ]、函数调用&#xff08; &#xff09;&#xff0c;接下来我们将继续学习剩下的操作符。 1. 结构成员访问操作符 1.1 结构体成员的直接访…

79 C++对象模型探索。数据语义学 - 进程内存空间布局分析

不同的数据在内存中会有不同的保存时机&#xff0c;和保存位置&#xff0c;这一节就分析这个。 当运行一个可执行文件时候&#xff0c;操作系统就会把这个可执行文件加载到内存&#xff1b;此时进程有一个虚拟的地址空间&#xff08;内存空间&#xff09;&#xff0c;如下图&a…

Docker部署思维导图工具SimpleMindMap并实现公网远程访问

文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性&#xff0c;包含插件化架构、多种结构类型&…

03_2 连续时间信号的傅里叶变换(FT) 非周期信号的傅里叶变换

各位看官&#xff0c;大家好&#xff01;本讲为《数字信号处理理论篇》03_2 连续时间信号的傅里叶变换 非周期信号的傅里叶变换。&#xff08;特别提示&#xff1a;课程内容为由浅入深的特性&#xff0c;而且前后对照&#xff0c;不要跳跃观看&#xff0c;请按照文章或视频顺序…

《30天自制操作系统》 第一周(D1-D7) 笔记

前言&#xff1a;这是我2023年5月份做的一个小项目&#xff0c;最终是完成了整个OS。笔记的话&#xff0c;只记录了第一周。想完善&#xff0c;却扔在草稿箱里许久。最终决定&#xff0c;还是发出来存个档吧。 一、汇编语言 基础指令 MOV: move赋值&#xff0c;数据传送指令…

nginx复现负载均衡案例

这里是下载好了docker&#xff0c;并显示了下镜像这里是拉到了nginx的镜像这里是把容器起来&#xff0c;-itd是容器关闭后销毁这里是显示起来的容器进入到这个容器里面查看许多命令用不了&#xff0c;应该想办法把docker里的文件夹映射到物理机中 这里是如果访问6666端口那么隧…

常见电源电路(LDO、非隔离拓扑和隔离拓扑结构)

一、常见电路元件和符号 二、DC-DC转换器 DC-DC转换器&#xff1a;即直流-直流转换器&#xff0c;分为三类&#xff1a;①线性调节器&#xff1b;②电容性开关解调器&#xff1b;③电感性开关调节器&#xff1b; 2.1线性稳压器&#xff08;LDO&#xff09; 2.1.1 NMOS LDO…

UI自动化定位元素之js操作

前言 在UI自动化测试中&#xff0c;元素定位是一个至关重要的步骤。准确地定位到页面上的元素&#xff0c;是实现自动化测试的前提和保障。本文将介绍使用JavaScript进行元素定位的常见方法&#xff0c;并分析页面的组成&#xff0c;帮助读者更好地理解和应用元素定位技术。 页…

Oracle RAC 集群的安装(保姆级教程)

文章目录 一、安装前的规划1、系统规划2、网络规划3、存储规划 二、主机配置1、Linux主机安装&#xff08;rac01&rac02&#xff09;2、配置yum源并安装依赖包&#xff08;rac01&rac02&#xff09;3、网络配置&#xff08;rac01&rac02&#xff09;4、存储配置&#…

深度强化学习(王树森)笔记01

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

网安渗透攻击作业(1)

实现负载均衡 第一步&#xff1a;安装依赖 sudo apt insta11 libgd-dev 第二步&#xff1a;下载nginx wget http://nginx.org/download/nginx-1.22.1.tar.gz 第三步&#xff1a;对nginx进行解压 tar -zvxf nginx-1.22.1.tar.g2 第四步&#xff1a;编译安装nginx cd ngi…

短剧小程序分销系统开发:创新与机遇的融合

一、引言 随着移动互联网的快速发展&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;正逐渐成为人们生活中的一部分。短剧小程序分销系统的开发&#xff0c;不仅为短剧的传播提供了新的渠道&#xff0c;同时也为相关产业带来了新的商业机会。本文将探讨短剧小程序分销系统…

【JavaEE】网络原理: 网络编程套接字(概念)

目录 1.什么是网络编程 2.网络编程中的基本概念 2.1发送端和接收端 2.2请求和响应 2.3客户端和服务端 3.Socket套接字 4.Socket编程注意事项 1.什么是网络编程 网络编程&#xff0c;指网络上的主机&#xff0c;通过不同的进程&#xff0c;以编程的方式实现网络通信 (…

PVE更换LXC源教程,如何在PVE上使用LXC容器

PVE更换LXC源教程&#xff0c;如何在PVE上使用LXC容器 Proxmox Virtual Environment (PVE) 是一种基于开源的虚拟化平台&#xff0c;它允许您轻松地在单个物理服务器上管理和部署虚拟机和容器。其中的LXC容器是一种轻量级容器化技术&#xff0c;可提供更高的性能和资源利用率。…