项目1菜品分页查询功能

项目1菜品分页查询功能

先看效果图(图片没有显示出来因为阿里云OSS关闭了)

 接下来我们进行开发:

第一步:我们需要阅读yapi接口文档,分析需求,请求的类型以及响应什么内容

第二步:分析好需求,我们进行代码开发:

/**
     * 菜品分页查询
     * @param dishPageQueryDTO
     * @return
     */
    @GetMapping("/page")
    @ApiOperation("菜品分页查询")
    public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO){
        log.info("菜品分页查询:{}", dishPageQueryDTO);
        PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);
        return Result.success(pageResult);
    }

确定好请求get路径/page,前面我们分析接口文档得知,我们需要返回total以及records,所以响应的类型为Result<PageResult>,而PageResult中封装的就是total以及records,然后我们调用Service层

@Override
    public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {
        PageHelper.startPage(dishPageQueryDTO.getPage(),dishPageQueryDTO.getPageSize());
        Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);
        PageResult pageResult = new PageResult(page.getTotal(),page.getResult());
        return pageResult;
    }

利用Pagehelper插件,简化我们的分页的查询操作,这里要注意的是:Page里的泛型是DIshVO(封装了分类的名字categoryName)而不是Dish,因为接口文档表明了我们必须返回categoryName我们才能在分页中显示菜品的分类名称字段,然后就是调用Mapper持久层

<select id="pageQuery" resultType="com.sky.vo.DishVO">
        select d.*,c.name categoryName from `sky-take-out`.dish d left join `sky-take-out`.category c
        on d.category_id = c.id
        <where>
            <if test="name != null">
                and d.name like concat('%',#{name},'%')
            </if>
            <if test="categoryId != null">
                and d.category_id = #{categoryId}
            </if>
            <if test="status != null">
                and d.status = #{status}
            </if>
        </where>
    </select>

mapper层的方法名我们就不多说了,我们使用了xml映射,因为有些查询字段不是必须的比如菜品名称,售卖状态,菜品分类.这里的SQL语句最需要注意的细节是我们查询c.name(分类名称),我们需要给他起个别名categoryName,否则Mybatis框架无法自动封装到DishVO的categoryName属性

总结:

那到此我们的代码就完毕了,可以通过swagger和前后端联调进行测试,在开头的地方已经给大家展示了,谢谢大家

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值