【写在前面】
项目的后台管理系统需要展示所有资源信息,select *
虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差。分页自然是必要选择,但原生的方法过于繁杂。MyBatis的分页插件PageHelper
和SpringBoot的集成是更好的选择,它的使用非常简单,开发更为高效。
代码如下
一、pom文件导入依赖
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.5</version></dependency>
二、配置application.yml
##pagehelper分页插件
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql
三、编写PageRequest
、PageResult
实体类
package com.jxnu.os.model;/*** @author xiao*/
public class PageRequest {/*** 当前页码*/private int pageNum;/*** 每页数量*/private int pageSize;public int getPageNum() {return pageNum;}public void setPageNum(int pageNum) {this.pageNum = pageNum;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}
}
package com.jxnu.os.model;import java.util.List;/*** @author xiao*/
public class PageResult
{/*** 当前页码*/private int pageNum;/*** 每页数量*/private int pageSize;/*** 记录总数*/private long totalSize;/*** 页码总数*/private int totalPages;/*** 数据模型*/private List<?> content;public int getPageNum() {return pageNum;}public void setPageNum(int pageNum) {this.pageNum = pageNum;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public long getTotalSize() {return totalSize;}public void setTotalSize(long totalSize) {this.totalSize = totalSize;}public int getTotalPages() {return totalPages;}public void setTotalPages(int totalPages) {this.totalPages = totalPages;}public List<?> getContent() {return content;}public void setContent(List<?> content) {this.content = content;}
}
四、service层 编写findPage
、PageInfo
方法
public PageResult findPage(PageRequest pageRequest,Integer p_id) {return PageUtils.getPageResult(pageRequest, getPageInfo(pageRequest,p_id));}/*** 调用分页插件完成分页* @param pageRequest* @return*/private PageInfo<Resource> getPageInfo(PageRequest pageRequest,Integer p_id) {int pageNum = pageRequest.getPageNum();int pageSize = pageRequest.getPageSize();PageHelper.startPage(pageNum, pageSize);List<Resource> resources = resourceMapper.selectPage(p_id);return new PageInfo<Resource>(resources);}
五、controller层编写findPage
方法
@PostMapping(value="/findPage")public Object findPage(@RequestBody(required = false) PageRequest pageQuery,Integer p_id) {//System.out.println(pageQuery.getPageNum());//System.out.println(p_id);return resourceService.findPage(pageQuery,p_id);}
ok ,大功告成!