1,法一:
引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* List分页工具类
*
*/
public class PageUtil {
/**
* 对List进行分页
*
* @param list
* @param pageNum
* @param pageSize
* @param <T>
* @return PageInfo<T>
*/
public static <T> PageInfo<T> startPage(List<T> list, Integer pageNum, Integer pageSize) {
//创建Page类
Page<T> page = new Page<>(pageNum, pageSize);
//为Page类中的total属性赋值
page.setTotal(list.size());
//计算当前需要显示的数据下标起始值
int startIndex = (pageNum - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, list.size());
//从链表中截取需要显示的子链表,并加入到Page
page.addAll(list.subList(startIndex, endIndex));
//以Page创建PageInfo
return page.toPageInfo();
}
}
分页方法调用:
PageInfo<TastDTO> taskPageInfo = PageUtil.startPage(taskDTOList, pageNum, pageSize);
2,法二:
/**
* 分页查询管理员信息
*
* @param pageNum num
* @param pageSize size
* @return 管理员分页数据
*/
public PageInfo<AdminDTO> listAdmin(Integer pageNum, Integer pageSize) {
//userDao.selectAdmin()不能直接放数据集,否则失效,必须为数据查询的函数,dao层查询
Page<AdminDTO> page = PageHelper.startPage(pageNum, pageSize).doSelectPage(() -> userDao.selectAdmin());
return new PageInfo<>(page);
}
3,法三
//使用默认分页,无需传输分页数据
/**
* 默认分页,在使用时PageFactory.defaultPage会自动获取pageSize和pageNo参数
*
*/
public static <T> Page<T> defaultPage() {
int pageSize = 10;
int pageNo = 1;
HttpServletRequest request = HttpServletUtil.getRequest();
//每页条数
String pageSizeString = request.getParameter(PAGE_SIZE_PARAM_NAME);
if (ObjectUtil.isNotEmpty(pageSizeString)) {
pageSize = Integer.parseInt(pageSizeString);
}
//第几页
String pageNoString = request.getParameter(PAGE_NO_PARAM_NAME);
if (ObjectUtil.isNotEmpty(pageNoString)) {
pageNo = Integer.parseInt(pageNoString);
}
return new Page<>(pageNo, pageSize);
}
//实现类ProgressServiceImpl
public Page<ProjectListVO> getProjectList(String monthTime,Integer rdUnit, Integer status) {
Page<ProjectListVO> projectList = progressMapper.getProjectList(PageFactory.defaultPage(), monthTime,rdUnit,status);
return projectList;
}
//接口progressMapper
Page<ProjectListVO> getProjectList(Page<ProjectListVO> defaultPage,@Param("monthTime") String monthTime,@Param("rdUnit")Integer rdUnit
, @Param("status")Integer status);
//使用mybatis处理时采用分页
Page<Progress> progressPage = progressMapper.selectPage(PageFactory.defaultPage(), queryWrapper);