Page 分页之 Entity to Domain

结合分页插件 PageHelper

分页类

public class Page implements Serializable {
    private static final long serialVersionUID = 1L;
    private int page;
    private int pageSize;
    private int pages;
    private long total;
    private List rows;

    public Page() {
    }

    public int getPage() {
        return this.page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getPageSize() {
        return this.pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPages() {
        return this.pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public long getTotal() {
        return this.total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List getRows() {
        return this.rows;
    }

    public void setRows(List rows) {
        this.rows = rows;
    }
}

 

PageUtils
public static   Page toPage(List list, Function mapper){
        Page page = new Page<>();
        if(list instanceof com.github.pagehelper.Page){
            com.github.pagehelper.Page pagehelperPage = (com.github.pagehelper.Page) list;
            page.setPage(pagehelperPage.getPageNum());
            page.setPageSize(pagehelperPage.getPageSize());
            page.setTotal(pagehelperPage.getTotal());
            page.setPages(pagehelperPage.getPages());
        }
        List resultList = new ArrayList<>();
        list.forEach(item->{
            resultList.add(mapper.apply(item));
        });
        page.setRows(resultList);
        return page;
    }


/**
     * 根据查询出的 list entity 对象,转换成 domain 对象 ,返回page对象
     * @param dataList  数据list
     * @param domainInput ,new 一个
     * @param  数据库对应的entity对象
     * @param  返回给页面的domain 对象
     * @return
     */
    public static  Page getPageDomainForEntity(List dataList,D domainInput){
        List lists = new ArrayList<>();
        String className = domainInput.getClass().getName();
        try {
            //entity 转换成 domain
            dataList.forEach(item->{
                try {
                    D domain = (D) Class.forName(className).newInstance();
                    BeanUtils.copyProperties(item, domain);
                    lists.add(domain);
                } catch (Exception e) {
                    logger.error(" 初始化实体类异常 : "+ className ,e);
                }

            });
        } catch (Exception e) {
            logger.error("进行 entity 转换 domain 失败 : "+ className ,e);
        }

        //封装 page 信息
        Page retPage = new Page<>();
        if(dataList instanceof com.github.pagehelper.Page){
            com.github.pagehelper.Page pagehelperPage = (com.github.pagehelper.Page) dataList;
            retPage.setPage(pagehelperPage.getPageNum());
            retPage.setPageSize(pagehelperPage.getPageSize());
            retPage.setTotal(pagehelperPage.getTotal());
            retPage.setPages(pagehelperPage.getPages());

        }
        retPage.setRows(lists);

        return retPage;
    }

 

应用:

List list = service.find();

        Page retPage= PageUtils.getPageDomainForEntity(list ,new YourDomain());

 

你可能感兴趣的:(java)