当前位置: 首页 > news >正文

贵阳市观山湖区网站建设四川建设数字证书网站

贵阳市观山湖区网站建设,四川建设数字证书网站,网络服务器搭建与配置,wordpress新手3. 菜品分页查询 3.1 需求分析和设计 3.1.1 产品原型 系统中的菜品数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据。 菜品分页原型: 在菜品列表展示时…

 3. 菜品分页查询

3.1 需求分析和设计

3.1.1 产品原型

系统中的菜品数据很多的时候,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据。

菜品分页原型:

在菜品列表展示时,除了菜品的基本信息(名称、售价、售卖状态、最后操作时间)外,还有两个字段略微特殊,第一个是图片字段 ,我们从数据库查询出来的仅仅是图片的名字,图片要想在表格中回显展示出来,就需要下载这个图片。第二个是菜品分类,这里展示的是分类名称,而不是分类ID,此时我们就需要根据菜品的分类ID,去分类表中查询分类信息,然后在页面展示。

业务规则:

  • 根据页码展示菜品信息

  • 每页展示10条数据

  • 分页查询时可以根据需要输入菜品名称、菜品分类、菜品状态进行查询

3.1.2 接口设计

根据上述原型图,设计出相应的接口。

3.2 代码开发

3.2.1 设计DTO类

根据菜品分页查询接口定义设计对应的DTO:

在sky-pojo模块中,已定义

package com.sky.dto;
​
import lombok.Data;
import java.io.Serializable;
​
@Data
public class DishPageQueryDTO implements Serializable {
​private int page;private int pageSize;private String name;private Integer categoryId; //分类idprivate Integer status; //状态 0表示禁用 1表示启用
​
}

3.2.2 设计VO类

根据菜品分页查询接口定义设计对应的VO:

在sky-pojo模块中,已定义

package com.sky.vo;
​
import com.sky.entity.DishFlavor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
​
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DishVO implements Serializable {
​private Long id;//菜品名称private String name;//菜品分类idprivate Long categoryId;//菜品价格private BigDecimal price;//图片private String image;//描述信息private String description;//0 停售 1 起售private Integer status;//更新时间private LocalDateTime updateTime;//分类名称private String categoryName;//菜品关联的口味private List<DishFlavor> flavors = new ArrayList<>();
}

3.2.3 Controller层

根据接口定义创建DishController的page分页查询方法:

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

3.2.4 Service层接口

在 DishService 中扩展分页查询方法:

   /*** 菜品分页查询** @param dishPageQueryDTO* @return*/PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO);

3.2.5 Service层实现类

在 DishServiceImpl 中实现分页查询方法:

 /*** 菜品分页查询** @param dishPageQueryDTO* @return*/public PageResult pageQuery(DishPageQueryDTO dishPageQueryDTO) {PageHelper.startPage(dishPageQueryDTO.getPage(), dishPageQueryDTO.getPageSize());Page<DishVO> page = dishMapper.pageQuery(dishPageQueryDTO);//后绪步骤实现return new PageResult(page.getTotal(), page.getResult());}

3.2.6 Mapper层

在 DishMapper 接口中声明 pageQuery 方法:

 /*** 菜品分页查询** @param dishPageQueryDTO* @return*/Page<DishVO> pageQuery(DishPageQueryDTO dishPageQueryDTO);

在 DishMapper.xml 中编写SQL:

<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>

1. 因为left join category表,即d表查全部,c表查部分,即c表有约束,约束的方式是用on关键字进行约束

2.因为d.*里有name属性,二者重合了,所以要给c.name取个别名,c.name as categoryName,否则mybatis底层无法完成自动映射。

3.

 

小结

分页查询菜品功能
1.把前端返回的数据封装成了DTO2.把数据库查询返回的结果封装成了VO3.分页查询首先使用分页插件然后进行查全部,因为涉及到了多表所以就用了了左外连接把查到的结果封装成page<实体类>最后封装PageResult返回<!--查询所有菜品以及菜品所属分类  因为left join category表,即d表查全部,c表查部分,所以c表有约束,约束的方式是用on关键字进行约束--><select id="findAll" resultType="com.sky.vo.DishVO">select d.*,c.name as categoryNamefrom dish d  left join category c on d.category_id = c.id。。。</select>小细节:因为d.*里有name属性,二者重合了,所以要给c.name取个别名,c.name as         categoryName,否则mybatis底层无法完成自动映射。
http://www.yayakq.cn/news/6488/

相关文章:

  • xxx美食网站建设规划书安徽省建设工程信息网芜湖市公开招标信息
  • 怎么检查网站的死链做网站怎么选择服务器的大小
  • 钢材贸易网站建设汉化wordpress插件
  • 西宁网站建设排名网站建设后需要录入
  • 白山市住房和城乡建设局网站网站设计毕业选题内容
  • 扬中网站建设多少钱南京制作网架厂家
  • 广东三网合一网站建设报价苏州高端网站建设机构
  • 成都app推广公司免费做优化的网站
  • 内网网站开发报价o2o网站建设基本流程
  • 公司网站建设有什么好处网站上的地图导航怎么做
  • 网站建设方案书 doc济南做seo排名
  • 门户型网站有哪些wordpress+电脑微信登陆
  • 网站开发代码实例网站开发的好处和弊端
  • 阿里巴巴做网站联系人怎么做网络推广公司
  • 深圳做网站的公司的区域郑州人流医院哪家好
  • 有公众号要不要做网站网站的服务有哪些
  • 备案 通过后 网站打不开网站开发都是使用框架吗
  • 网站icp做年检南宁seo网站建设
  • 微餐饮建站费用义乌网站建设技术托管
  • 网站建设公司如何挖掘客户网络营销师在哪里报名考试
  • 做淘宝客网站哪个好用科技自立自强是国家强盛之基
  • 深圳网站制作电话建筑培训中心
  • 做网站的前端是做什么网站购物车建设
  • 昆明云南微网站搭建哪家好seo站长工具箱
  • 网站模板凡平台物流托运
  • 信誉楼线上商城小程序网站的内部优化
  • 广州找公司建网站nike diy定制网站
  • 优质做网站哪家好WordPress访问者ip
  • 静态网站 源码网站建设费记到什么科目
  • 公司做网站的钱网银转账用途大兴安岭网站建设