分页查询
通过构建分页对象和查询条件,再封装成响应对象返回,适用于常见的 CRUD 操作中的分页查询。
public class PageRequestDto {
protected Integer size;
protected Integer page;
public void checkParam() {
if (this.page == null || this.page < 0) {
setPage(1);
}
if (this.size == null || this.size < 0 || this.size > 100) {
setSize(10);
}
}
}
public class WmMaterialDto extends PageRequestDto {}
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
public ResponseResult findList(WmMaterialDto dto) {
// 给预设
dto.checkParam();
// 创建一个分页对象 page,并将请求参数 dto 中的 page(页码)和 size(每页大小)传入,
// 初始化分页信息
IPage page = new Page(dto.getPage(), dto.getSize());
// 创建一个查询条件构造器 queryWrapper,用于设置查询的条件
QueryWrapper<WmMaterial> queryWrapper = new QueryWrapper<>();
// 查询条件
queryWrapper.eq("is_collection" ,dto.getIsCollection());
queryWrapper.eq("user_id" ,WmThreadLocalUtil.getUser().getId());
queryWrapper.orderByDesc("created_time");
// 通过分页查询,将查询条件 queryWrapper 应用到分页对象 page 上,执行查询并返回分页结果。
page = page(page ,queryWrapper);
// 创建一个分页响应结果 pageResponseResult,包含页码、每页大小和总记录数
PageResponseResult pageResponseResult = new PageResponseResult(dto.getPage(), dto.getSize(), (int) page.getTotal());
// 设置 pageResponseResult 的数据部分,将查询到的记录(即 page.getRecords())放入结果中
pageResponseResult.setData(page.getRecords());
// 返回封装好的分页结果
return pageResponseResult;
}