分页工具类
import cn.enilu.flash.bean.constant.state.Order;
import cn.enilu.flash.utils.HttpUtil;
import cn.enilu.flash.utils.StringUtil;
import cn.enilu.flash.utils.factory.Page;
import cn.enilu.flash.utils.factory.PageUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.jiexun.common.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Sort;import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class PageFactory<T> {private Logger logger = LoggerFactory.getLogger(getClass());public Page<T> defaultPage() {HttpServletRequest request = HttpUtil.getRequest();int limit = 10;if (request.getParameter("limit") != null) {limit = Integer.valueOf(request.getParameter("limit"));}String pageNum = "1";if (request.getParameter("page") != null) {pageNum = request.getParameter("page");}int offset = 0;if (StringUtil.isNotEmpty(pageNum)) {offset = (Integer.valueOf(pageNum) - 1) * limit;} else {offset = Integer.valueOf(request.getParameter("offset"));}String sortName = request.getParameter("sort");String order = request.getParameter("order");if (StringUtil.isEmpty(sortName)) {Page<T> page = new Page<>((offset / limit + 1), limit);return page;} else {Page<T> page = new Page<>((offset / limit + 1), limit, sortName);logger.info("sortName {} order {}",sortName,order);if (Order.ASC.getDes().equals(order)) {logger.info("sortName {} order {} ASC",sortName,order);Sort sort = Sort.by(Sort.Direction.ASC, sortName);page.setSort(sort);} else {logger.info("sortName {} order {} DESC",sortName,order);Sort sort = Sort.by(Sort.Direction.DESC, sortName);page.setSort(sort);}return page;}}public PageUtil<T> defaultPagePageUtil() {HttpServletRequest request = HttpUtil.getRequest();int page = 1;if (request.getParameter("page") != null) {page = Integer.valueOf(request.getParameter("page"));}int limit = 10;if (request.getParameter("limit") != null) {limit = Integer.valueOf(request.getParameter("limit"));}return new PageUtil<>(page, limit);}public com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> defaultMpPage() {HttpServletRequest request = HttpUtil.getRequest();int page = 1;if (request.getParameter("page") != null) {page = Integer.valueOf(request.getParameter("page"));}int limit = 10;if (request.getParameter("limit") != null) {limit = Integer.valueOf(request.getParameter("limit"));}return new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page, limit);}public Map<String, Object> getMpMap(IPage<T> pageData) {Map<String, Object> map = new HashMap<>();map.put("total", pageData.getTotal());map.put("size", pageData.getSize());map.put("pages", pageData.getPages());map.put("current", pageData.getCurrent());map.put("data", pageData.getRecords());return map;}public <M extends BaseMapper<T>> Map<String, Object> getPageMap(M m, Wrapper<T> queryWrapper) {com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> page = defaultMpPage();IPage<T> pageData = m.selectPage(page, queryWrapper);return getMpMap(pageData);}public static <T> com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> mpPage() {HttpServletRequest request = HttpUtil.getRequest();int limit = 10;if (request.getParameter("limit") != null) {limit = Integer.valueOf(request.getParameter("limit"));}Integer currentPage = 1;if (request.getParameter("page") != null) {currentPage = Integer.valueOf(request.getParameter("page"));}com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(currentPage, limit);String sortName = request.getParameter("sort");if (StringUtils.isEmpty(sortName)) {page.setOrders(OrderItem.descs("id"));return page;}String order = request.getParameter("order");if (Order.ASC.getDes().equals(order)) {page.setOrders(OrderItem.ascs(sortName));} else {page.setOrders(OrderItem.descs(sortName));}return page;}public static <T> IPage<T> getPage(List<T> list) {HttpServletRequest request = HttpUtil.getRequest();int pageSize = 10;if (request.getParameter("limit") != null) {pageSize = Integer.valueOf(request.getParameter("limit"));}Integer currentPage = 1;if (request.getParameter("page") != null) {currentPage = Integer.valueOf(request.getParameter("page"));}long startIndex = (currentPage - 1) * pageSize;long endIndex = Math.min(startIndex + pageSize, list.size());if (startIndex >= endIndex) {com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> emptyPage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(currentPage, pageSize);emptyPage.setRecords(new ArrayList<>());emptyPage.setTotal(0L);return emptyPage;}List<T> pageList = list.subList((int)startIndex, (int)endIndex);com.baomidou.mybatisplus.extension.plugins.pagination.Page<T> page = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(currentPage, pageSize);page.setRecords(pageList);page.setTotal(list.size());return page;}
}
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.Collections;
import java.util.List;
@Data
public class PageRes<T> {@ApiModelProperty("总数")protected long total = 0;@ApiModelProperty("每页显示条数,默认 10")protected long size = 10;@ApiModelProperty("当前页")protected long current = 1;@ApiModelProperty("查询数据列表")protected List<T> records = Collections.emptyList();}