@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ListPageUtil<T> {
private List<T> data;
private int lastPage;
private int currentPage;
private int nextPage;
private int pageSize;
private int totalPage;
private int totalCount;
public ListPageUtil(List<T> data, int currentPage, int pageSize) {
if (CollectionUtils.isEmpty(data)) {
return;
}
this.data = data;
this.pageSize = pageSize;
this.currentPage = currentPage;
this.totalCount = data.size();
this.totalPage = (totalCount + pageSize - 1) / pageSize;
this.lastPage = currentPage - 1 > 1 ? currentPage - 1 : 1;
this.nextPage = currentPage >= totalPage ? totalPage : currentPage + 1;
}
public List<T> getData () {
int fromIndex = (currentPage - 1) * pageSize;
if (fromIndex >= data.size()) {
return Collections.emptyList();
}
if (fromIndex < 0) {
return Collections.emptyList();
}
int toIndex = currentPage * pageSize;
if (toIndex >= data.size()) {
toIndex = data.size();
}
return data.subList(fromIndex, toIndex);
}
}
分页使用示例:
ReturnResult returnResult = new ReturnResult()
List<UserImageDB> userImageList = userImageMapper.getUserImageList(userReqDTO.getUserName(), userReqDTO.getBeginTime(), userReqDTO.getEndTime(), userReqDTO.getAreaCodeList());
if (CollectionUtil.isEmpty(userImageList)) {
return "";
}
ListPageUtil<UserImageDB> listPageUtil = new ListPageUtil<>(userImageList, userReqDTO.getPageNo(), userReqDTO.getPageSize());
List<UserImageDB> userImageDTOList = listPageUtil.getData();
returnResult.setResult(userImageDTOList);
returnResult.setTotalCount(new Long(listPageUtil.getTotalCount()));
returnResult.setPage(userReqDTO.getPageNo());
returnResult.setPageSize(userReqDTO.getPageSize());
returnResult.setNextPage(listPageUtil.getNextPage());
...