1、用过最方便的分页还是mybatis plus + Ipage的形式,使用mybatis plus封装好的语句能直接做到数据查询和分页效果。
@Override
public IPage<BrainGovTalentSupportGzyxhgzjkPO> pageTalentSupportGzyxhgzjk(Page<BrainGovTalentSupportGzyxhgzjkPO> page) {
return talentSupportGzyxhgzjkMapper.selectPage(page, null);
}
2、老的项目里还会用到 PageHelper 这个分页插件,分页的语句要放在sql查询的语句前,这样分页才能生效。
@Override
public PageWrapper<ElectricityUpFailReason> electricityUploadFailReason(int year, String city, String county, PageWrapper<ElectricityUpFailReason> page){
PageHelper.startPage(page.getPageNum(), page.getPageSize());
List<ElectricityUpFailReason> list = electricityUpFailReasonDao.electricityUploadFailReason(String.valueOf(year),city,county);
PageInfo pageInfo = new PageInfo(list);
page.setPageInfo(pageInfo);
return page;
}
2.1、有的时候数据库里查询出来的数据合集还需要再简单处理的时候,分页数据还需要重新赋值一下。
@Override
public PageWrapper<EntData> findEntList(EntData entData, PageWrapper<EntData> page)
PageHelper.startPage(page.getPageNum(), page.getPageSize());
List<EntData> list = entDataDao.findEntList(entData);
{
//数据处理
}
PageInfo pageInfo = new PageInfo(list);
page.setPageInfo(pageInfo);
return page;
2.2、有的时候数据库里查询出来的数据合集还需要复杂的处理数据的时候,分页插件就不好用了,就需要手动去分页。
//手动分页
int listSize = entDataList.size();
page.setTotalRecord(listSize);
page.setTotalPage(listSize %page.getPageSize() == 0 ? listSize / page.getPageSize() : listSize /page.getPageSize() +1);
page.setResults(entDataList.subList((page.getPageNum()-1)*page.getPageSize() > listSize ? listSize: (page.getPageNum()-1)*page.getPageSize(), page.getPageNum()*page.getPageSize() > listSize ? listSize: page.getPageNum()*page.getPageSize()));
//entDataList 是查询的结果
//page 是一个分页数据格式的对象