苍穹外卖--菜品分页查询
1.需求分析和设计
产品原型:
业务规则:
根据页码展示菜品信息
每页展示10条数据
分页查询时可以根据需要输入菜品名称、菜品分类、菜品状态进行查询
接口设计:
根据菜品分页查询接口定义设计对应的DTO:
根据菜品分页查询接口定义设计对应的VO:
2.代码开发
Controller层代码:
/*** 菜品分页查询* @param dishPageQueryDTO* @return*/@GetMapping("/page")@ApiOperation("菜品分页查询")public Result<PageResult> page(DishPageQueryDTO dishPageQueryDTO){//分页查询统一返回的是PageResult,因为返回的是Query,所以不需要注解接受PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);return Result.success(pageResult);}
Service层代码:
/*** 菜品分页查询* @param dishPageQueryDTO* @return*/PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO);
/*** 菜品分页查询* @param dishPageQueryDTO* @return*/@Overridepublic PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {PageHelper.startPage(dishPageQueryDTO.getPage(),dishPageQueryDTO.getPageSize());// 使用PageHelper设置分页参数(当前页码和每页记录数)Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);// 调用Mapper层方法执行分页查询,返回Page对象(包含分页信息和查询结果)return new PageResult(page.getTotal(),page.getResult());}
Mapper层代码:
/*** 菜品分页查询* @param dishPageQueryDTO* @return*/Page<DishVO> pageQuery(DishPageQueryDTO dishPageQueryDTO);
XML代码:
<select id="pageQuery" resultType="com.sky.vo.DishVO">SELECT d.*,c.name as categoryName FROM dish d LEFT OUTER JOIN 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>ORDER BY d.create_time DESC</select>