Page<YourVo> page = new Page(yourDto.getPage(), yourDto.getPageSize(), baseInfoForNewsList.size());
Integer startIndex = PageUtil.makeStartIndex(videoForNewsQueryDto.getPage(), videoForNewsQueryDto.getPageSize(), baseInfoForNewsList.size());
Integer endIndex = PageUtil.makeEndIndex(videoForNewsQueryDto.getPage(), videoForNewsQueryDto.getPageSize(), baseInfoForNewsList.size());
page.setRecords(baseInfoForNewsList.subList(startIndex, endIndex + 1));
return page;
分页工具类:
/**
* 分页计算工具
* 因为有些数据无法使用sql分页,即:没法使用mybatis的分页工具, 故这里自己手动分页
*
* 本工具类 对 页码过大的处理是, 如果页码超出了有效范围,则返回最后一页的页码
* 这会导致前端 如果是 一个页面不断加载,则最后一页会不断重复加载
*/
public class PageUtil {
/** <pre>得到某一页第一条记录的 下标</pre>
* @param pageIndex: 页码,假定第一页是从 1开始计算
* @param pageSize: 页大小
* @param totalSize: 总记录个数
* @return java.lang.Integer
**/
public static int makeStartIndex(int pageIndex, int pageSize, int totalSize) {
if (pageIndex < 1)
return 0;
int totalPage = totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1 ;
if (pageIndex > totalPage) {
pageIndex = totalPage;
}
return (pageIndex - 1) * pageSize;
}
/** 得到某一页第一条记录的 下标
* @param pageIndex: 页码,假定第一页是从 1开始计算
* @param pageSize: 页大小
* @param totalSize: 总记录个数
* @return java.lang.Long
**/
public static Long makeStartIndex(Long pageIndex, Long pageSize, int totalSize) {
if (pageIndex < 1)
return 0L;
Long totalPage = totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1 ;
if (pageIndex > totalPage) {
pageIndex = totalPage;
}
return (pageIndex - 1) * pageSize;
}
/**
* 得到某一页最后一条记录的 下标
* @param pageIndex 假定第一页是从 1开始计算
* @param pageSize 每页大小
* @param totalSize 总的元素个数
* @return
*/
public static int makeEndIndex(int pageIndex, int pageSize, int totalSize) {
if (pageIndex <= 0) {
pageIndex = 1;
}
int totalPage = totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1 ;
if (pageIndex > totalPage) {
pageIndex = totalPage;
}
int endIndex = pageIndex * pageSize - 1;
if (endIndex >= totalSize)
return totalSize - 1;
return endIndex;
}
/**
* 得到某一页最后一条记录的 下标
* @param pageIndex 页码, 假定第一页是从 1开始计算
* @param pageSize 每页大小
* @param totalSize 总的元素个数
* @return
*/
public static Long makeEndIndex(Long pageIndex, Long pageSize, int totalSize) {
if (pageIndex <= 0) {
pageIndex = 1L;
}
Long totalPage = totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1 ;
if (pageIndex > totalPage) {
pageIndex = totalPage;
}
Long endIndex = pageIndex * pageSize - 1;
if (endIndex >= totalSize)
return totalSize - 1L;
return endIndex;
}
/**
* 得到总页数
* @param pageSize: 页大小
* @param totalSize: 总记录数
* @return java.lang.Long
**/
public static Long makeTotalPage(Long pageSize, Integer totalSize) {
return totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1;
}
/**
* 得到总页数
* @param pageSize: 页大小
* @param totalSize: 总记录数
* @return java.lang.Long
**/
public static Integer makeTotalPage(Integer pageSize, Integer totalSize) {
return totalSize% pageSize== 0 ? totalSize/ pageSize : totalSize/ pageSize+ 1;
}
}
全部评论