mybatis分页插件的配置可以在mybaits的配置文件进行配置,也可以在spring的配置文件中进行配置,两者配置其一即可
上面是 PageHelper 官方给的配置和注释,虽然写的很多,不过确实描述的很明白。
dialect :标识是哪一种数据库,设计上必须。 offsetAsPageNum :将 RowBounds 第一个参数 offset 当成 pageNum 页码使用 rowBoundsWithCount :设置为 true 时,使用 RowBounds 分页会进行 count 查询 reasonable : value=true 时, pageNum 小于1会查询第一页,如果 pageNum 大于 pageSize 会查询最后一页
注:上面的配置只针对于pagehelper4.x版本的,如果你用的是pagehelper5.x版本就要这样配置,注意两个spring配置中的类名不同
1. 在 MyBatis 配置 xml 中配置拦截器插件
2. 在 Spring 配置文件中配置拦截器插件
如果4.x的版本用了5.x的版本报错信息如下 springboot 在启动项目的时候就会报错,报错信息有很多,主要是因为
总的来说就是缺少了 com.github.pagehelper.PageInterceptor ,这个是新版拦截器,5.x版本才开始使用,所以在4.x版本这样配置是不行的
那么5.x版本的配置在pagehelper4.x上能生效吗?答案是不行 报错信息如下
新版的拦截器PageInterceptor不能和旧版拦截器相互转换,所以还是不行的。
总的来说,pagehelper4.x就该用4.x的配置,pagehelper5.x就用5.x的配置(官方推荐)
使用mybatis的分页插件时报错: net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet/sf/jsqlparse
原因:在使用mybatis分页插件时,需要依赖 jsqlparser
PageHelper的 不同版本依赖不同 的jsqlparser版本
pageHelper4.x依赖版本 jsqlparser-1.3.jar
在配置完mybatis后,pagehelper的业务用法,就以分页查询用户列表为例
添加查询所以用户的 mapper 接口
重点来了,然后在 service 中, 先开启分页 , 再进行查询 ,然后把查询结果集放入 PageInfo 中
PageHelper.startPage(pageNum, pageSize); 这句非常重要,这段代码表示分页的开始,意思是从第 pageNum 页开始,每页显示 pageSize 条记录。
PageInfo 这个类是插件里的类,这个类里面的属性会在输出结果中显示, 使用 PageInfo 这个类,你需要将查询出来的 list 放进去:
PageHelper输出的数据结构
然后在 controller 层调用该方法设置对应的 pageNum 和 pageSize 就可以了,我设置 pageNum 为1, pageSize 为5,看个输出结果吧
PageInfo这个类里面的属性:
pageNum 当前页
pageSize 每页的数量
size 当前页的数量
orderBy 排序
startRow 当前页面第一个元素在数据库中的行号
endRow 当前页面最后一个元素在数据库中的行号
total 总记录数(所有符合条件的数据总数)
pages 总页数 (这个页数也很好算,每页5条,总共有11条,需要3页才可以显示完)
list 结果集
prePage 前一页
nextPage 下一页
isFirstPage 是否为第一页
isLastPage 是否为最后一页
hasPreviousPage 是否有前一页
hasNextPage 是否有下一页
navigatePages 导航页码数
navigatepageNums 所有导航页号
navigateFirstPage 导航第一页
navigateLastPage 导航最后一页
firstPage 第一页
lastPage 最后一页
Mybatis分页插件PageHelper的使用-
总的来说,pagehelper4.x就该用4.x的配置,pagehelper5.x就用5.x的配置(官方推荐)使用mybatis的分页插件时报错: net.sf.jsqlparser.statement.select.PlainSelect.getGroupBy()Lnet\/sf\/jsqlparse 原因:在使用mybatis分页插件时,需要依赖 jsqlparser PageHelper的 不同版本依赖不同 的...
MyBatis使用 PageHelper 分页查询插件的详细配置
引入PageHelper插件后,需要进行以下步骤:1) 引入相关依赖;2) 在mybatis-config.xml中配置插件,注意typeAliases标签的正确顺序;3) 在Java代码中,使用PageInfo对象处理分页信息,如当前页数、每页大小等,并格式化查询结果。总结来说,通过PageHelper插件,我们可以动态获取页码和每页记录数,如startIndex =...
MyBatis分页插件PageHelper自定义分页逻辑实现
PageHelper在MySQL中使用limit子句进行分页,在小数据量下表现良好,但面对大数据量,效率较低,因为MySQL需先查询所有数据再过滤。为优化,我曾分享过《MySQL查询优化》中的自关联方法,对于每页10条数据的场景,即使不使用索引,效率也可接受。深入研究PageHelper源码后,我发现其分页逻辑主要在AbstractHelperDia...
PageHelper的使用及底层原理
PageHelper是一款流行的Mybatis分页插件,支持多种数据库。在实际操作中,只需在pom.xml中添加依赖,并通过PageHelper.startPage()方法开启分页,例如指定页码和每页记录数。它会自动进行分页处理,并返回Page对象,从中获取分页信息。然而,PageHelper的使用存在两点疑问:一是统计总数时会额外请求,二是如何处理...
如何使用mybatis实现分页
一、使用MyBatis提供的分页插件 MyBatis提供了PageHelper插件来实现分页功能。首先,你需要在项目中引入PageHelper依赖。然后,在需要进行分页查询的地方,调用PageHelper的静态方法进行分页设置,例如设置页码和每页显示的记录数。执行查询后,PageHelper会自动将查询结果封装为分页数据。这种方式简单易用,不需要...
mybatis分页插件pagehelper工作原理和配置过程是什么?
PageHelper,一款为MyBatis框架量身打造的强大分页插件,适用于包括MySQL、Oracle、MariaDB、SQLite、Hsqldb在内的多种主流数据库。它提供了一种便捷的方式来实现分页,通过在原始SQL查询语句前添加`PageHelper.startPage(pageNum, pageSize);`,启动分页功能。在执行查询后,通过`PageInfo`对象可以获取到分页...
简化Mybatis分页操作,让我们来聊聊 PageHelper 及实现原理
PageHelper 是一款开源的 MyBatis 分页插件,旨在简化分页操作,提升开发效率。它无侵入性地在实际应用中实现分页功能,不需要修改原有 SQL 语句、Mapper 接口或 XML 文件。PageHelper 的特点与使用特点:PageHelper 具有无侵入性、易用性、功能强大和高度自定义等特点。无需修改原有 SQL,只需引入相关依赖...
基于Mybatis的分页控制 - PageHelper分页控制底层原理
Mybatis内置的RowBounds分页功能是逻辑分页实现,虽然简单,但项目中不推荐直接使用。其底层原理是通过设置offset(起始位置)和limit(每页数量)来实现分页,例如在mapper接口中指定这些参数。PageHelper利用Mybatis拦截器实现分页,其RowBounds方式通过设置offset-as-page-num参数,可以将offset作为页码,limit作为...
基于SpringBoot项目MyBatis分页插件实现分页总结
在运用Mybatis进行项目开发时,常常会遇到分页查询的难题。为了减少编写重复的分页SQL语句的劳动强度,我们引入了pagehelper插件。pagehelper插件是一个功能强大且易用的Mybatis分页插件,它能以插件的形式,实现分页功能,且与Mapper.xml完全解耦。这样可以避免直接编写分页SQL语句,大大提高了开发效率。在项目中...
mybatis 分页插件怎么用
引入分页插件一共有下面2种方式,推荐使用Maven方式,这种方式方便更新。1). 引入Jar包 如果你想使用本项目的jar包而不是直接引入类,你可以在这里下载各个版本的jar包(点击Download下的jar即可下载)https:\/\/oss.sonatype.org\/content\/repositories\/releases\/com\/github\/pagehelper\/pagehelper\/ http:\/\/...