PageHelper 分页使用
PageHelper.startPage(pageNum, pageSize, orderBy);
其中最后一个参数是数据库字段名称,按传入的字段进行排序
场景:如果有接口参数中有排序字段,则按参数中的排序字段来排序,如果没有按sql中的order by 来排序。
接口参数如下
接口如下:
/**
* 排序列
*/
public static final String ORDER_BY_COLUMN = "orderByColumn";
/**
* 排序的方向 "desc" 或者 "asc".
*/
public static final String IS_ASC = "isAsc";
/**
* 封装分页对象
*/
public static PageDomain getPageDomain(Integer pageNum, Integer pageSize) {
PageDomain pageDomain = new PageDomain();
pageDomain.setPageNum(pageNum);
pageDomain.setPageSize(pageSize);
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
return pageDomain;
}
/**
* 设置请求分页数据
*/
protected void startPage() {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.startPage(pageNum, pageSize, orderBy);
}
}
/**
* 接口调用
*/
@PostMapping("/list")
public TableDataInfo list(@RequestBody SysSubplatTaskComm sysSubplatTaskComm)
{
startPage();
List<SysSubplatTaskComm> list = sysSubplatTaskCommService.selectSysSubplatTaskCommList(sysSubplatTaskComm);
return getDataTable(list);
}
sql如下:
PageHelper源码中替换了原sql中的order by time,使用参数中create_time的排序字段拼接
原sql
去除原sql中排序
执行结果如下: