一、先运行看看接口到sql
- 随便找个表格看看
- 可以看到传入了,分页关键属性
- 看看
debug
的日志打印的sql
- [debug,137] - ==> Preparing: select dict_id, dict_name, dict_type, status, create_by, create_time, remark from sys_dict_type LIMIT ?
- [debug,137] - ==> Parameters: 10(Integer)
- [debug,137] - <== Total: 10
可以看出并没有
分页语句
二、来看看若依怎么处理的分页
- 于是,我找到接口位置
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictType dictType)
{
//表格通用===分页处理
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
//响应请求分页数据
return getDataTable(list);
}
- 可以看到,在查sql的前后都有一个处理方法
先看看startPage();
/**
* 设置请求分页数据
*/
protected void startPage()
{
//构建分页实体
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
//分页关键属性 判空
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
{
//按 Sql 转义顺序
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
//分页参数合理化
Boolean reasonable = pageDomain.getReasonable();
//分页工具使用
PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
}
}
- 看这里就要进去看最主要的构建了:
TableSupport.buildPageRequest();
/**
* 封装分页对象
*/
public static PageDomain getPageDomain()
{
//分页数据实体
PageDomain pageDomain = new PageDomain();
/**
* ServletUtils客户端工具类
* getParameterToInt(PAGE_NUM)
* ====>具体操作:
* 获取get方法中的参数 getRequest().getParameter(name)
* 类型转换器转IntConvert.toInt()
*/
pageDomain.setPageNum(ServletUtils.getParameterToInt(PAGE_NUM));
pageDomain.setPageSize(ServletUtils.getParameterToInt(PAGE_SIZE));
pageDomain.setOrderByColumn(ServletUtils.getParameter(ORDER_BY_COLUMN));
pageDomain.setIsAsc(ServletUtils.getParameter(IS_ASC));
pageDomain.setReasonable(ServletUtils.getParameterToBool(REASONABLE));
return pageDomain;
}
//指向上面的方法
public static PageDomain buildPageRequest()
{
return getPageDomain();
}
这是请求参数的枚举
到这里,知道了怎么获取到请求的
pageNum: 1 pageSize: 10
了
三、最后回到接口,及其参数返回
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictType dictType)
{
//表格通用===分页处理
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
//响应请求分页数据
return getDataTable(list);
}
- 来看看
getDataTable(list);
/**
* 响应请求分页数据
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
protected TableDataInfo getDataTable(List<?> list)
{
//设置分页同意返回
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(list);
rspData.setTotal(new PageInfo(list).getTotal());
return rspData;
}
- 就可以看到,可复用的,分页专用的返回响应数据
w(゚Д゚)w!
就到这里了