在用mybatis-plus分页插件的时候,会存在一个问题。那就是它自带的分页每次都是返回所有的实体数据给到前端。是只想要给VO对象给前端。

@Data
public class PageInfo<T>{

    @ApiModelProperty("状态码")
    private int code;
    @ApiModelProperty("消息")
    private String message;
    @ApiModelProperty("每页大小")
    private long size;
    @ApiModelProperty("当前页")
    private long current;
    @ApiModelProperty("总条数")
    private long total;
    @ApiModelProperty("多少页")
    private long pages;
    @ApiModelProperty("数据")
    private List<T> data;

    public PageInfo(){

    }

    public static <T> PageInfo<T> build(List<T> list,long current,long size,long total) {
        PageInfo<T> rspData = new PageInfo<>();
        rspData.setCode(HttpStatus.HTTP_OK);
        rspData.setMessage("查询成功");
        rspData.setData(list);
        rspData.setTotal(total);
        rspData.setCurrent(current);
        rspData.setSize(size);
        rspData.setPages(total%size==0?(total/size):(total/size)+1);
        return rspData;
    }
}
public PageInfo<RuralDynamicsVO> selectList(RuralDynamicsInput input) {
        if (StringUtils.isEmpty(input.getCurrent())){
            input.setCurrent(1);
        }
        if (StringUtils.isEmpty(input.getSize())){
            input.setSize(10);
        }
        Page<RuralDynamics> page = new Page<>(input.getCurrent(),input.getSize());
        LambdaQueryWrapper<RuralDynamics> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(!StringUtils.isEmpty(input.getTitle()),RuralDynamics::getTitle,input.getTitle())
                .like(!StringUtils.isEmpty(input.getReleaseStatus()),RuralDynamics::getReleaseStatus,input.getReleaseStatus())
                .between(!StringUtils.isEmpty(input.getStartTime())
                                && !StringUtils.isEmpty(input.getEndTime()),
                        RuralDynamics::getReleaseTime, input.getStartTime(), input.getEndTime())
                .orderByDesc(RuralDynamics::getId);
        //分页条件查询出所有的结果
        Page<RuralDynamics> page1 = ruralDynamicsMapper.selectPage(page, queryWrapper);
        List<RuralDynamicsVO> list =  new ArrayList<>();
        //拿到所有的数据集
        for (RuralDynamics data : page1.getRecords()) {
            RuralDynamicsVO vo = new RuralDynamicsVO();
            BeanUtils.copyProperties(data,vo);
            list.add(vo);
        }
        PageInfo<RuralDynamicsVO> build = PageInfo.build(list, page1.getCurrent(), page1.getSize(),page1.getTotal());
        return build;
    }
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐