记录一下关于MybatisPlus分页查询的参数

记录一下mp的分页插件使用:

代码生成器的分页查询一般都是这样:

@RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,@PathVariable Long catelogId){
          
   
        PageUtils page = attrGroupService.queryPage(params);

        return R.ok().put("page", page);
    }

由于今天写代码的时候给分页查询多加了一个参数,因此需要重新改一下根据这个catelogId进行查询:

@RequestMapping("/list/{catelogId}")
    public R list(@RequestParam Map<String, Object> params,@PathVariable Long catelogId){
          
   
        PageUtils page = attrGroupService.queryPage(params,catelogId);

        return R.ok().put("page", page);
    }

重写queryPage的实现:

@Service("attrGroupService")
    public class AttrGroupServiceImpl extends ServiceImpl<AttrGroupDao, AttrGroupEntity> implements AttrGroupService {
          
   
    
    
        @Override
        public PageUtils queryPage(Map<String, Object> params, Long catelogId) {
          
   
            if (catelogId == 0) {
          
   
                IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), new QueryWrapper<AttrGroupEntity>());
                return new PageUtils(page);
                //PageUtils 可以帮我们从Ipage里边自动解析出,总页码,当前页码,总数量等信息
            } else {
          
   
                String key = (String) params.get("key"); //key为检索关键字
                //select*from pms_attr_group where catelog_id=? and (attr_group_id=key or attr_group_name=key)
                QueryWrapper<AttrGroupEntity> wrapper = new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId);
                if (StringUtils.isNotEmpty(key)) {
          
   
                    wrapper.and((obj) -> {
          
   
                        obj.eq("attr_group_id", key).or().like("attr_group_name", key);
                    });
                }
                IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>().getPage(params), wrapper);
                return new PageUtils(page);
            }
        }
    }

首先判断前端传过来的catelogId是否等于0,然后直接调用Ipage里的page方法进行查询:

IPage<AttrGroupEntity> page = this.page(new Query<AttrGroupEntity>, new QueryWrapper<AttrGroupEntity>())

page方法有两个参数: Params1:是前端传过来的分页信息 Params2:是一个QueryWrapper高级查询

我们进第一个参数(Query)里边看一下封装的信息: 在这可以看到当我们前端传过分页的信息过来放到Map里,在调用getPage方法获取IPage,在这里也可以看到所需要的参数:curPage、limit、sidx(排序字段)、order(排序方式)

将从前端传过来的参数通过调用this.page方法自动将这些参数封装成一个IPage对象,最终返回使用PageUtils

return new PageUtils(page);

来到PageUtils里边可以看到PageUtils可以帮我们从IPage里边自动解析出,总页码,当前页码,总数量等信息::

本人小白记录一下当天所遇见的问题,大佬勿喷,谢谢!

经验分享 程序员 微信小程序 职场和发展