当一次查库数据量较大,不光给数据库带来压力,同时前端渲染页面压力也很大,所以尝试做真分页来减小压力。
SELECT * FROM `t_item_type` limit page,pageSize
可以看见这是从第一页开始查,查5条数据。
将原来需要人手动写的 sql中 limit page,pageSize变成直接传入参数。
spring
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
springBoot
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
参数说明:
PageHelper.startPage(1,5);这句话放置的位置是一整条sql查询结果上边,因为插件的原理是在sql上拼接 limit 传进去两个参数 ,比如当前service中逻辑还包含两条sql,此分页将不起作用。
//这一句一定要放在查出所有数据的上边,第一个数表示pageNum,第二个数表示pageSize
PageHelper.startPage(1,5);
//这里表示要获取所有的信息
List<ItemAllInfo>itemAllInfos = itemTypeService.selectAllItemByType(itemType);
//转换成分页的形式,这里做改动后返回值于原来相比格式发生变化,要及时调整前端接收数据的格式。
PageInfo pageInfo = new PageInfo(itemAllInfos);
工欲善其事,必先利其器。这里做完改动以后还是要多多注意前端格式转换。
PageHelper是一个用于在Java应用程序中进行分页查询的开源库。它可以与MyBatis等持久层框架集成,帮助开发人员轻松地处理数据库查询结果的分页展示。
PageHelper的特点包括:
简单易用: PageHelper提供了简单的方法来实现分页查询,不需要开发人员手动编写复杂的SQL语句。
无侵入性: 使用PageHelper不需要修改现有的SQL语句或代码逻辑,只需要在查询方法中添加相应的分页配置。
与主流持久层框架集成: PageHelper可以与主流的Java持久层框架(如MyBatis)无缝集成,只需要在项目中引入相关依赖即可。
多种数据库支持: PageHelper支持多种常见的数据库,包括MySQL、Oracle、SQL Server等。
灵活的配置: PageHelper提供了丰富的配置选项,可以根据需求进行定制,例如可以配置默认的分页大小、是否进行合理化的分页等。
支持物理分页和逻辑分页: PageHelper支持物理分页(通过limit和offset)和逻辑分页(通过查询所有数据后在内存中进行分页)。
提供排序功能: PageHelper还提供了排序功能,可以根据指定的字段和顺序进行数据排序。
基于拦截器: PageHelper使用拦截器技术,在执行SQL查询时自动添加分页相关的SQL语句。
总的来说,PageHelper可以帮助开发人员在不增加太多复杂性的情况下实现分页查询功能,提升开发效率并优化数据库查询性能。
在使用PageHelper进行分页查询时,还有一些要补充的重要点:
引入依赖: 在项目的构建文件中(例如Maven的pom.xml)添加PageHelper的依赖,以便在项目中使用。
配置拦截器: 在项目的配置文件中(例如MyBatis的配置文件)配置PageHelper的拦截器。这将确保在执行查询时自动应用分页功能。
方法调用: 在进行分页查询的方法中,使用PageHelper的静态方法来设置分页参数,例如设置页码和每页记录数等。
分页参数对象: PageHelper还提供了一个Page类,你可以通过这个类来获取分页的相关信息,如总记录数、总页数等。
注意事项: 分页查询通常会涉及到数据库查询,需要注意查询的性能问题。在查询大量数据时,合理使用索引、优化查询语句,避免不必要的性能问题。
合理设置分页大小: 分页大小的选择需要根据实际情况来决定。如果设置过小,可能会导致分页查询过于频繁;如果设置过大,可能会增加内存和查询时间。
逻辑分页的使用场景: 虽然逻辑分页在某些场景下可以减轻数据库压力,但在处理大量数据时可能会导致内存占用较高,需要权衡选择。
多表关联查询: 在进行多表关联查询时,PageHelper也可以有效地进行分页处理,但需要注意SQL语句的编写和性能。
总之,使用PageHelper可以方便地实现分页查询,提升开发效率。然而,在使用过程中需要结合具体情况进行配置和优化,以确保分页查询既满足业务需求又不影响系统性能。