在用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;
}