背景
分页插件工具。
核心
其实主要是2个点 1.如何使用 2.优点
如何使用
1.设置分页的数据 2.第一条查询sql,就会分页
优点
1.获取总数量更方便了。不需要再写重复的sql。 2.sql里也不用出现和分页相关的数据。
底层原理
还是基于拦截器
代码
@ApiOperation("业务员新增商机列表(bd)")
@RequestMapping(value = "/addBusinessOpportunity/page", method = RequestMethod.GET)
public RespBean addBusinessOpportunityPage(PageParam pageParam,String selectTime) {
Integer employeeId = getSessionUser().getEmployeeId();
// 获取分页
Page<BusinessDataBusinessOpportunityVo> list = customerBusinessDataSevice.addBusinessOpportunityPage(selectTime,employeeId,pageParam);
Map<String, Object> map = new HashMap<String, Object>();
map.put("data", list);
map.put("count", list.getTotal()); //获取总数量
return RespBean.ok(map);
}
public Page<BusinessDataBusinessOpportunityVo> addBusinessOpportunityPage(String selectTime,Integer employeeId,PageParam pageParam) {
BpmPageHelper.startPage(pageParam); //设置输入数据
List<Integer> employeeIds = new ArrayList<>();
employeeIds.add(employeeId);
String startTime =null;
String endTime =null;
if(selectTime!=null) {
startTime = SelectTimeEnum.getStartTime(selectTime);
endTime = SelectTimeEnum.getEndTime(selectTime);
}
return businessDataSeviceMapper.addBusinessOpportunityPage(employeeIds,startTime,endTime); //第一条查询sql
}
如果有查询条件呢?
即关键字。解决方法?没有解决方法,因为没有方法。所以还是得必须手动传入数据,sql也必须显式写数据。
排序
有方法。
核心类

自己使用的时候,可以稍微封装一下
1.封装工具类,就是刚才上面的核心类
2.另外一个,就是参数
封装工具类
package com.wz.bpm.common;
import com.github.pagehelper.PageHelper;
/**
* 分页包装对象
*
*/
public class BpmPageHelper extends PageHelper {
public static final int DEFAULT_PAGE_NUM = 1;
public static final int DEFAULT_PAGE_SIZE = 10;
public static void startPage(PageParam pageParam) {
int pageNum = pageParam.getPage() == 0 ? DEFAULT_PAGE_NUM : pageParam.getPage();
int pageSize = pageParam.getPageSize() == 0 ? DEFAULT_PAGE_SIZE : pageParam.getPageSize();
// 开始分页
startPage(pageNum, pageSize);
}
}
封装参数
package com.wz.bpm.common;
import com.alibaba.fastjson.JSON;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel
public class PageParam implements Serializable {
private static final long serialVersionUID = 1L;
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
/**
* 当前页
*/
@ApiModelProperty(value = "页号")
private int page;
/**
* 新版datagrid用到的自定义排序字段
*/
@ApiModelProperty(value = "排序字段名")
private String sortName;
/**
* 新版datagrid用到的升序或降序字段
*/
@ApiModelProperty(value = "排序类型")
private String order;
/**
* 关键字
*/
@ApiModelProperty(value = "关键字")
private String keyword;
/**
* 每页的数量
*/
@ApiModelProperty(value = "每页行数")
private int pageSize;
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public String getSortName() {
return sortName;
}
public void setSortName(String sortName) {
this.sortName = sortName;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
参考
pagehelper.github.io/docs/howtou… //官方教程,非常好
github.com/pagehelper/…
juejin.cn/post/684490… //介绍了3种不同的解决思路
1.
2.sql //最常用的。缺点是优点笨拙。
3.拦截器 //就是分页插件的解决思路。优点是方便,缺点是解决不了关键字查询条件。