PageHelper教你做人
本文最后更新于:2 年前
SpringBoot配置Mybatis-PageHelper
PageHelper的正确使用方式
PageHelper必须要跟上一个从数据库进行查询的语句,因为PageHelper的底层就是对数据库的语法上添加Limit进行分页,绝对不要随便跟一个集合,因为这根本不会起作用
String orderBy = "create_time desc";
// 开启分页插件
PageHelper.startPage(pageNum, pageSize, orederBy);
// 查询数据,获取list集合
List<TravelRecordResponseVo> list = sysEnterpriseService.selectSysEnterpriseList(sysEnterprise);
// 封装pageInfo对象
return AjaxResult.success(new PageInfo(list));
PageHelper的限制
PageHelper.startPage(1,10);只对该语句以后的第一个查询语句得到的数据进行分页,就算你在PageInfo pa = new PageInfo(“”,对象);语句里面的对象是写的最终得到的数据,该插件还是只会对第一个查询所查询出来的数据进行分页
第一个查询语句是指什么呢?举个例子吧,比如你有一个查询数据的方法,写在了PageHelper.startPage(1, 10);下面.但是这个查询方法里面包含两个查询语句的话,该插件就只会对第一查询语句查询的数据进行分页,而不是对返回最终数据的查询与基础查询出来的数据进行分页
改变一下自己的代码结构,让最终需要的数据所需要的查询语句放在PageHelper.startPage(1, 10)下面就行
普通List集合解决分页的方法
/**
* 集合数据分页
* @param dataList 数据集合
* @param pageSize 页大小
* @param pageNum 当前页
* @param sort asc升序 desc降序
* @return
*/
public static List<Object> pageHelp(List<Object> dataList, int pageSize, int pageNum, String sort) {
// 进行集合反转
if (StringUtils.isNotNull(sort) && StringUtils.isNotEmpty(sort) && "desc".equals(sort)) {
Collections.reverse(dataList);
}
// 进行循环截取
List<Object> currentPageList = new ArrayList<>();
if (dataList != null && dataList.size() > 0) {
int currIdx = (pageNum > 1 ? (pageNum - 1) * pageSize : 0);
for (int i = 0; i < pageSize && i < dataList.size() - currIdx; i++) {
Object data = dataList.get(currIdx + i);
currentPageList.add(data);
}
}
return currentPageList;
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!其他问题请通过下方微信联系!