All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.acyou.leo.framework.commons.PageQuery Maven / Gradle / Ivy

There is a newer version: 1.6.0.RELEASE
Show newest version
package cn.acyou.leo.framework.commons;

import cn.acyou.leo.framework.model.PageData;
import cn.acyou.leo.framework.model.PageSo;
import cn.acyou.leo.framework.util.BeanCopyUtil;
import cn.acyou.leo.framework.util.SqlUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * @author fangyou
 * @version [1.0.0, 2021-08-03 16:57]
 */
public class PageQuery {

    /**
     * 转换
     * 使用 springframework.data.domain.Page 时转换为 PageData
     *
     * 

example:

*
     *        Page<ProductEo> users = productEsRepository.findAll(PageRequest.of(1, 20));
     *        PageData<ProductEo> pageData = PageQuery.convert(user);
     * 
* * @param 类型 * @param springPage spring data的page * @return PageData */ public static PageData convert(Page springPage) { Integer pageNum = springPage.getNumber() != 0 ? springPage.getNumber() : 1; PageData resultData = new PageData<>(pageNum, springPage.getSize()); resultData.setTotal(springPage.getTotalElements()); resultData.setList(springPage.getContent()); resultData.setTotalPage(springPage.getTotalPages()); return resultData; } /** * 使用 PageHelper 时转换为 PageData * *

example:

*
     *     PageHelper.startPage(req.getPageNum(), req.getPageSize());
     *     List<MarketingProductVo> marketingProductList = marketingProductMapper.selectMarketingProduct(req);
     *     PageData<MarketingProductVo> PageData = PageData.convert(new PageInfo<>(marketingProductList));
     * 
* * @param pageInfo pageHelper 分页对象 * @param 具体类型 * @return PageData */ public static PageData convert(PageInfo pageInfo) { //这里没有数据的时候pageNum是0 Integer pageNum = pageInfo.getPageNum() != 0 ? pageInfo.getPageNum() : 1; PageData resultData = new PageData<>(pageNum, pageInfo.getPageSize()); resultData.setTotal(pageInfo.getTotal()); resultData.setList(pageInfo.getList()); resultData.setTotalPage(pageInfo.getPages()); return resultData; } /** * 使用 PageHelper 时转换为 PageData(包含类型转换) * * @param 目标类型 * @param pageInfo类型 * @param pageInfo 页面信息 * @param tarClass 目标类型Class * @return PageData */ public static PageData convert(PageInfo pageInfo, Class tarClass) { //这里没有数据的时候pageNum是0 Integer pageNum = pageInfo.getPageNum() != 0 ? pageInfo.getPageNum() : 1; PageData resultData = new PageData<>(pageNum, pageInfo.getPageSize()); resultData.setTotal(pageInfo.getTotal()); resultData.setList(BeanCopyUtil.copyList(pageInfo.getList(), tarClass)); resultData.setTotalPage(pageInfo.getPages()); return resultData; } /** * 提供方法:使用pageHelper时 转 PageData * *

example:

*
     *      PageHelper.startPage(req.getPageNum(), req.getPageSize());
     *      List<MarketingProductVo> marketingProductList = marketingProductMapper.selectMarketingProduct(req);
     *      PageData<MarketingProductVo> PageData = PageData.convert(marketingProductList);
     * 
* * @param 具体类型 * @param dataList dataList 数据List * @return PageData */ public static PageData convert(List dataList) { PageInfo pageInfo = new PageInfo<>(dataList); return convert(pageInfo); } /** * 开启分页 * * 配合:{@link #selectMapper 使用} *

example:

* *
     *    PageData<Student> convert2 =  PageData.startPage(pageNum, pageSize).selectMapper(studentService.selectAll());
     *    PageData<StudentVo> convertType =  PageData.startPage(pageNum, pageSize).selectMapper(studentService.selectAll(), StudentVo.class);
     * 
* * @param pageNum 页码,从1开始 * @param pageSize 页面大小 * @return PageData */ public static PageQuery startPage(Integer pageNum, Integer pageSize) { PageHelper.startPage(pageNum, pageSize); return new PageQuery(); } /** * 参考: {@link #startPage(Integer, Integer)} * * @param pageNum 页码,从1开始 * @param pageSize 页面大小 * @param pageSizeZero true 时支持pageSize=0查全部 * false 时pageSize=0没有结果 * null 时用按照默认{false}配置 * @return PageData */ public static PageQuery startPage(Integer pageNum, Integer pageSize, Boolean pageSizeZero) { PageHelper.startPage(pageNum, pageSize, true, null, pageSizeZero); return new PageQuery(); } /** * 参考: {@link #startPage(Integer, Integer)} * * @param pageNum 页码,从1开始 * @param pageSize 页面大小 * @param orderBy 排序 * @return PageData */ public static PageQuery startPage(Integer pageNum, Integer pageSize, String orderBy) { PageHelper.startPage(pageNum, pageSize, orderBy); return new PageQuery(); } /** * 参考: {@link #startPage(Integer, Integer)} * * @param pageSo 分页参数 * @return PageData */ public static PageQuery startPage(PageSo pageSo) { return startPage(pageSo.getPageNum(), pageSo.getPageSize(), SqlUtil.convertOrderBy(pageSo)); } /** * 参考: {@link #startPage(Integer, Integer)} * * @param pageSo 分页参数 * @param pageSizeZero true 时支持pageSize=0查全部 * false 时pageSize=0没有结果 * null 时用按照默认{false}配置 * @return PageData */ public static PageQuery startPage(PageSo pageSo, Boolean pageSizeZero) { PageHelper.startPage(pageSo.getPageNum(), pageSo.getPageSize(), true, null, pageSizeZero); PageHelper.orderBy(SqlUtil.convertOrderBy(pageSo)); return new PageQuery(); } /** * 分页查询 * * @param queryList 查询结果 * @param 泛型 * @return PageData */ public PageData selectMapper(List queryList) { PageInfo pageInfo = new PageInfo<>(queryList); return convert(pageInfo); } /** * 分页查询(包含类型转换) * * @param 目标类型 * @param 结果类型 * @param queryList 查询结果 * @param tarClass 模板类型 * @return PageData */ public PageData selectMapper(List queryList, Class tarClass) { PageInfo pageInfo = new PageInfo<>(queryList); return convert(pageInfo, tarClass); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy