SpringBoot集成MyBatis的分页插件PageHelper
【写在前面】
项目的后台管理系统需要展示所有资源信息,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: mysql
reasonable: true
supportMethodsArguments: true
params: 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 ,大功告成!