MyBatis使⽤PageHelper(MySQL)

MyBatis使⽤PageHelper(MySQL)

  • 一、 limit分⻚
  • 二、PageHelper插件
    • 第⼀步:引⼊依赖
    • 第⼆步:在mybatis-config.xml⽂件中配置插件
    • 第三步:编写Java代码
    • 第四步:格式化结果查看
  • 三、SpringBoot3 集成 PageHelper 插件


  • PageHelper 在 github 的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
  • PageHelper 官网:https://pagehelper.github.io/

一、 limit分⻚

在这里插入图片描述

  • mysql的limit后⾯两个数字:
    • 第⼀个数字:startIndex(起始下标。下标从0开始。)
    • 第⼆个数字:pageSize(每⻚显示的记录条数)
  • 假设已知⻚码pageNum,还有每⻚显示的记录条数pageSize,startIndex = (pageNum - 1) * pageSize
  • 所以,标准通⽤的mysql分⻚SQL:
select * fromtableName ......
limit (pageNum - 1) * pageSize, pageSize
  • 在实际的开发中,一般由前端或者后端人员将 pageNum、pageSize 计算好后传递给 mybatis。
<select id="selectActivityByConditionForPage" parameterType="map" resultMap="BaseResultMap">selecta.id,u1.name as owner,a.name,a.start_date,a.end_date,a.cost,a.description,a.create_time,u2.name as create_by,a.edit_time,u3.name as edit_byfromtbl_activity ajointbl_user u1 on a.owner=u1.idjointbl_user u2 on a.create_by=u2.idleft jointbl_user u3 on a.edit_by=u3.id<where><if test="name!=null and name!=''">and a.name like '%' #{name} '%'</if><if test="owner!=null and owner!=''">and u1.name like '%' #{owner} '%'</if><if test="startDate!=null and startDate!=''">and a.start_date&gt;=#{startDate}</if><if test="endDate!=null and endDate!=''">and a.end_date&lt;=#{endDate}</if></where>order by a.create_time desclimit #{beginNo},#{pageSize}
</select>

二、PageHelper插件

第⼀步:引⼊依赖

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

第⼆步:在mybatis-config.xml⽂件中配置插件

  • typeAliases标签下⾯进⾏配置:

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

第三步:编写Java代码

  • 关键点:
    • 在查询语句之前开启分⻚功能。(只有紧跟在 PageHelper.startPage 方法后的第一个 Mybatis 的查询(Select)方法会被分页。)
    • 在查询语句之后封装PageInfo对象。(PageInfo对象将来会存储到 request 域当中。在⻚⾯上展示。)
    @Test
    public void testPageHelper() throws Exception{SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));SqlSession sqlSession = sqlSessionFactory.openSession();CarMapper mapper = sqlSession.getMapper(CarMapper.class);// 开启分⻚PageHelper.startPage(2, 2);// 执⾏查询语句List<Car> cars = mapper.selectAll();// 获取分⻚信息对象PageInfo<Car> pageInfo = new PageInfo<>(cars, 5);System.out.println(pageInfo);
    }
    

第四步:格式化结果查看

  • 对于其中的属性都有对应的方法来获取,需要的时候查找即可。
  • 每个属性的含义可以在使用的时候上网查找。
PageInfo{pageNum=2, pageSize=2, size=2, startRow=3, endRow=4, total=6, pages=3,list=Page{count=true, pageNum=2, pageSize=2, startRow=2, endRow=4, total=6, pages=3, reasonable=false, pageSizeZero=false}[Car{id=86, carNum='1234', brand='丰⽥霸道', guidePrice=50.5, produceTime='2020-1011', carType='燃油⻋'},Car{id=87, carNum='1234', brand='丰⽥霸道', guidePrice=50.5, produceTime='2020-10-11', carType='燃油⻋'}],prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true,navigatePages=5, navigateFirstPage=1, navigateLastPage=3,navigatepageNums=[1, 2, 3]
}

三、SpringBoot3 集成 PageHelper 插件

  • Add the following dependency to your pom.xml:
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency>

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

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

相关文章

爬虫入门四(抽屉半自动点赞、xpath使用、动作链、打码平台、scrapy框架介绍与安装及创建项目)

文章目录 一、抽屉半自动点赞二、xpath的使用三、动作链四、打码平台介绍超级鹰打码基本测试 五、自动登录超级鹰六、scrapy框架介绍安装创建爬虫项目 一、抽屉半自动点赞 登录抽屉账号保存cookiesimport timeimport jsonfrom selenium import webdriverfrom selenium.webdrive…

(正规api接口代发布权限)短视频账号矩阵系统源码独立搭建技术开发

短视频账号矩阵系统源码独立搭建技术开发&#xff1a; 搭建短视频账号矩阵系统源码独立技术开发需要以下步骤&#xff1a; 1. 确定需求&#xff1a;明确系统需要实现的功能和目标&#xff0c;包括账号管理、视频发布、数据分析等。 2. 学习相关知识和技术&#xff1a;了解短视…

Adobe将类ChatGPT集成到PDF中

2月21日&#xff0c;全球多媒体巨头Adobe在官网宣布&#xff0c;推出生成式AI助手AI Assistant&#xff0c;并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉&#xff0c;AI Assistant的功能与ChatGPT相似&#xff0c;可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

docker 容器访问 GPU 资源使用指南

概述 nvidia-docker 和 nvidia-container-runtime 是用于在 NVIDIA GPU 上运行 Docker 容器的两个相关工具。它们的作用是提供 Docker 容器与 GPU 加速硬件的集成支持&#xff0c;使容器中的应用程序能够充分利用 GPU 资源。 nvidia-docker 为了提高 Nvidia GPU 在 docker 中的…

全球冰川均衡调整(GIA)数据下载链接汇总(续)

前一专栏我们介绍了一些常用的GIA模型和对应的下载地址&#xff0c;但是不少数据是提供的球谐数据&#xff0c;对于部分用户使用不方便&#xff0c;这里分享NASA发布的几个格网的GIA&#xff08;PGR&#xff09;模型产品&#xff0c;其下载地址为&#xff1a;Files (nasa.gov) …

迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系!

《嵌入式工程师自我修养/C语言》系列——迅速了解Ascii、GBK、Unicode、UTF-8、BCD各种编码格式的由来及关系 一、Ascii编码二、GBK编码三、Unicode编码四、UTF-8编码五、BCD编码六、其他网友的总结 快速学习嵌入式开发其他基础知识&#xff1f;>>>>>>>&g…

什么是代码签名证书中的“硬证书”?

代码签名证书是用于验证和签名软件程序的一种数字证书。使用代码签名证书&#xff0c;可以保护代码完整性、防止非法篡改&#xff0c;标识软件发行商的身份并确保软件来源可信。按不同验证级别&#xff0c;代码签名证书分为扩展验证型EV代码签名证书、企业验证型OV代码签名证书…

5.2 Ajax 数据爬取实战

目录 1. 实战内容 2、Ajax 分析 3、爬取内容 4、存入MySQL 数据库 4.1 创建相关表 4.2 数据插入表中 5、总代码与结果 1. 实战内容 爬取Scrape | Movie的所有电影详情页的电影名、类别、时长、上映地及时间、简介、评分&#xff0c;并将这些内容存入MySQL数据库中。 2、…

智慧城市与数字孪生:共创未来城市新篇章

一、引言 随着科技的飞速发展&#xff0c;智慧城市与数字孪生已成为现代城市建设的核心议题。智慧城市注重利用先进的信息通信技术&#xff0c;提升城市治理水平&#xff0c;改善市民生活品质。而数字孪生则通过建立物理城市与数字模型之间的连接&#xff0c;为城市管理、规划…

SpringBoot自带的tomcat的最大连接数和最大的并发数

先说结果&#xff1a;springboot自带的tomcat的最大并发数是200&#xff0c; 最大连接数是&#xff1a;max-connectionsaccept-count的值 再说一下和连接数相关的几个配置&#xff1a; 以下都是默认值&#xff1a; server.tomcat.threads.min-spare10 server.tomcat.threa…

【Python笔记-设计模式】组合模式

一、说明 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。 (一) 解决问题 处理树形结构&#xff1a;可以很好地处理树形结构的数据&#xff0c;使得用户可以统一对待单个对象和对象组合。统一接…

17.openEuler操作系统启动管理

openEuler OECA认证辅导,标红的文字为学习重点和考点。 如果需要做实验,建议安装麒麟信安、银河麒麟、统信等具有图形化的操作系统,其安装与openeuler基本一致。 1.系统启动流程介绍 Linux系统启动流程: POST->Bios->Grub->kernel+initrd->systemd(init)->…

【计算机网络】1.4 接入网和物理媒体

1.4 接入网和物理媒体 问题&#xff1a;怎样将端系统和边缘路由器连接&#xff1f; 答&#xff1a;有线方式&#xff08;住宅接入网络、单位接入网络等&#xff09;或无线方式&#xff08;无线接入网络&#xff09;。 有线接入方式 光纤同轴混合网是基于已有的有线电视网开发的…

《Docker 简易速速上手小册》第9章 Docker 与持续集成(2024 最新版)

文章目录 9.1 持续集成的基本概念9.1.1 重点基础知识9.1.2 重点案例&#xff1a;Python Web 应用的 CI 流程9.1.3 拓展案例 1&#xff1a;Python 数据分析项目的 CI9.1.4 拓展案例 2&#xff1a;Python 微服务的 CI/CD 9.2 Docker 在 CI/CD 中的应用9.2.1 重点基础知识9.2.2 重…

关于使用Mxnet GPU版本运行DeepAR报错解决方案

1.引言 我们经常使用GPU来训练和部署神经网络&#xff0c;因为与CPU相比&#xff0c;它提供了更多的计算能力。在本教程中&#xff0c;我们将介绍如何将GPU与MXNet GluonTS一起使用。 首先&#xff0c;确保您的机器中至少有一个Nvidia GPU&#xff0c;并正确安装了CUDA以及CUDN…

C++动态链接库;C++链接库链接到C#上

1.在创建项目中选择动态链接库&#xff0c;如果没有可以从右侧搜索&#xff0c;如果还没有重新安装安装包点击修复增加相应功能 2.点击下一步&#xff0c;可以修改项目名称和目录位置点击创建完成项目创建 3.在新建项目内添加新的头文件&#xff08;.h&#xff09;&#xff0c;…

modbus-tcp协议详解

本文参考&#xff1a;Modbus协议中文版【完整版】.pdf&#xff0c;加上自己的理解的记录&#xff0c;该文章主要讲modbus-TCP协议。&#xff08;文档下载链接&#xff1a;【免费】modbus协议中文详细解释文档资源-CSDN文库&#xff09; 本系列文章分为三章&#xff1a; 1.mod…

Cubase学习:Cubase 12常用快捷键

按键盘上的上下箭头就可以让选中的音符向上或向下移动 数字0键: 停止 Ctrl+数字 0 键: 新建视图层 Alt+数字0 键: 重新设置视图层 小数点键: 播放指针回零点 数字1 键: 左定位指针 数字 2 键: 右定位指针 数字3 键--数字9键: 分别控制 3--9 的7个定位标志 Alt+数字1 键--数字9键…

HuggingFists系统功能介绍(5)--环境资源

模型库 模型库用于管理由HuggingFists系统自己生成的或者外部导入的各种模型。如&#xff1a;HuggingFace网站提供的各类模型可导入该模块进行统一管理及部署。该功能目前在HuggingFists的社区版中并未提供。 环境管理 环境管理-工作节点 环境管理-服务配置 环境管理主要用于与…

protobuf简单使用(二)

介绍 上一节中&#xff0c;我们介绍了protobuf&#xff0c;简单来说&#xff0c;它是一种消息数据格式&#xff0c;其作用类似于json&#xff0c;但是比json的使用效率要高。 除此以外&#xff0c;我们介绍了protobuf的简单使用&#xff0c;也就是如何可以像使用json一样&…