首页 > 其他分享 >黑马瑞吉外卖之套餐信息的分页查询

黑马瑞吉外卖之套餐信息的分页查询

时间:2022-10-19 11:00:11浏览次数:42  
标签:TableField FieldFill 瑞吉 private 外卖 套餐 import Long


黑马瑞吉外卖之套餐信息的分页查询

表和实体类环境以及前端页面分析

首先这里是套餐的功能开发,我们在设置数据库表以及之后的实体类的时候我们需要关注的就是套餐本身的分类以及套餐下关联的菜品。

所以首先是数据库表。

来看数据库当中的一个套餐的表以以及其设置的字段。这里我们需要注意到之前的分类管理中的id,我们套餐是分类的一种,所以这里需要有分类id。

黑马瑞吉外卖之套餐信息的分页查询_字段

于是我么设计出这样的表结构,然后就是实体类。

package com.jgdabc.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* 套餐
*/
@Data
public class Setmeal implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;


//分类id
private Long categoryId;


//套餐名称
private String name;


//套餐价格
private BigDecimal price;


//状态 0:停用 1:启用
private Integer status;


//编码
private String code;


//描述信息
private String description;


//图片
private String image;


@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;


@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;


@TableField(fill = FieldFill.INSERT)
private Long createUser;


@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;


//是否删除
private Integer isDeleted;
}

然后我们需要准备的就是套餐和菜品管理的表以及实体类。那自然这个套餐关联菜品的表首先要有套餐的id,然后对应每个i套餐id下详细的彩屏信息。

于是我们涉及出来这样的数据库。

黑马瑞吉外卖之套餐信息的分页查询_java_02


然后就是实体类。

package com.jgdabc.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* 套餐菜品关系
*/
@Data
public class SetmealDish implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;


//套餐id
private Long setmealId;


//菜品id
private Long dishId;


//菜品名称 (冗余字段)
private String name;

//菜品原价
private BigDecimal price;

//份数
private Integer copies;


//排序
private Integer sort;


@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;


@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;


@TableField(fill = FieldFill.INSERT)
private Long createUser;


@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;


//是否删除
private Integer isDeleted;
}
package com.jgdabc.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* 套餐菜品关系
*/
@Data
public class SetmealDish implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;


//套餐id
private Long setmealId;


//菜品id
private Long dishId;


//菜品名称 (冗余字段)
private String name;

//菜品原价
private BigDecimal price;

//份数
private Integer copies;


//排序
private Integer sort;


@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;


@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;


@TableField(fill = FieldFill.INSERT)
private Long createUser;


@TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;


//是否删除
private Integer isDeleted;
}

然后我们还是需要去扩展实体类属性,于是我们拓展出来dto。我们需要给套餐的实体类添加两个属性,一个是菜品的字段列表属性,一个是分类的名称。这两个属性我们后面需要用到。

在分页查询这里。

黑马瑞吉外卖之套餐信息的分页查询_ssm_03

有关数据的展示的问题,我们会发现,在setmeal这里其实并没有这个套餐分类,而在前端页面,要展示的话是需要这个字段的,所以我们需要拓展道这个属性,然后菜品数据这里也是一样的道理,我么之后再添加套餐的时候,需要添加菜品的一些信息,以及其它的操作,都需要这个属性。所以我们页扩展了出来。

黑马瑞吉外卖之套餐信息的分页查询_瑞吉外卖_04

然后数据展示的话,主要其实就是做一个分页的查询展示。

黑马瑞吉外卖之套餐信息的分页查询_ssm_05

这样的分页查询我们还是按照之前的逻辑,当我们打开这个前端页面的时候,这里的方法这里其实还是进行了挂载的自动加载。

黑马瑞吉外卖之套餐信息的分页查询_字段_06


那就是这样的一个方法。

黑马瑞吉外卖之套餐信息的分页查询_java_07


然后我们点进去去查看这个方法。下面这个就是分页查询的请求方法和路径。

黑马瑞吉外卖之套餐信息的分页查询_java_08


其实在浏览器这里我们也可以去调试路径。

由于我的后端代码已经写好了,所以这里返回200。

黑马瑞吉外卖之套餐信息的分页查询_java_09


黑马瑞吉外卖之套餐信息的分页查询_实体类_10

后端代码的逻辑开发

在这之前我们还需要进行三层架构的开发,就是dao,service,impl这几层的开发。
首先就是mapper层,我们只需要去在setmeal的基础上去开发,因为只是分页。

然后具体我们直接看到controller,

@GetMapping("/page")
public R_<Page> page(int page,int pageSize,String name)
{

//构造setmeal的分页·构造器
Page<Setmeal> pageInfo = new Page<>(page, pageSize);
// 拓展的dto的分页构造器
Page<SetmealDto> DtoPage = new Page<>();
// setmeal条件的添加
LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>();
// 根据添加name是否查询,如果name为空就不会作为查询条件1,如果不为空就作为查询条件
queryWrapper.like(name!=null,Setmeal::getName,name);
// 添加一个排序条件,根据更新时间来进行降序排列
queryWrapper.orderByDesc(Setmeal::getUpdateTime);
// setmeal里面属性的值的查询,查询的结果会被处理给到pageInfo
setMealService.page(pageInfo,queryWrapper);
// 拷贝属性
// 这里是拷贝属性,但是这个records需要单独处理,因为page里面的这个record是一个泛型修饰的属性,我们拷贝的话,需要
// 注意setmeal做泛型修饰里面的records要转变一下,然后才能给到records,另外我们需要将categoryName
// 加上去
BeanUtils.copyProperties(pageInfo,DtoPage,"records");
// 下面单独处理了records
List<Setmeal> records = pageInfo.getRecords();
List<SetmealDto> list = records.stream().map((item)->
{
SetmealDto setmealDto = new SetmealDto();
BeanUtils.copyProperties(item,setmealDto);

Long categoryId = item.getCategoryId();
//根据分类的id来查询分类的对象
Category category = categoryService.getById(categoryId);
if(category!=null)
{
String categoryName = category.getName();
setmealDto.setCategoryName(categoryName);

}
return setmealDto;
}).collect(Collectors.toList());
DtoPage.setRecords(list);
return R_.success(DtoPage);


}

还是比较容易理解的。整体的代码思路理解了,剩下的就只是单单的记忆了。


标签:TableField,FieldFill,瑞吉,private,外卖,套餐,import,Long
From: https://blog.51cto.com/u_15491777/5769030

相关文章

  • 瑞吉外卖实战项目全攻略——第一天
    瑞吉外卖实战项目全攻略——第一天该系列将记录一份完整的实战项目的完成过程,该篇属于第一天案例来自B站黑马程序员Java项目实战《瑞吉外卖》,请结合课程资料阅读以下内容......
  • 瑞吉外卖项目记录
    通过过滤器实现用户状态检测功能描述:用户访问首页时,若为未登录状态,则跳转到登录页面功能实现:创建LoginCheckFilter类,添加@WebFilter注解,将该类声明为过滤器//fil......
  • 1241. 外卖店优先级
    https://www.acwing.com/problem/content/1243/稍复杂一些的模拟题,但是若是暴力做法即将a[i][j]定义为i时刻id为j的优先级即可双重循环枚举每个时刻,每个id所有组合在此......
  • 黑马瑞吉外卖之套餐信息的修改
    黑马瑞吉外卖之套餐信息的修改基本上在前后端都进行了说明,这个流程,基本很细节的说明了。在上一篇我们完成了套餐的新建,现在我们来完成一下对套餐信息的修改。也就是说,我们......
  • 题目:美团外卖(简)
    packagecom.gao.Reflect.test01;//接口的制定方:美团外卖publicinterfaceMtwm{//在线支付功能:voidpayonline();}packagecom.gao.Reflect.test01;......
  • 设计模式在美团外卖营销业务中的实践
     业务策略多变导致需求多变,是业界很多技术团队面临的最具挑战的问题之一。那么如何设计一套易于扩展和维护的营销系统呢?  今天的文章来自美团外卖营销技术团队,他们分享......
  • 瑞吉外卖03
    1.公共字段自动填充在实体类中需要被统一管理的字段上上面加上@TableField注解,并在内部添加fill属性,INSERT为在执行新增操作时执行,@TableField(fill=FieldFill.INSERT......
  • 瑞吉外卖02
    1.完成过滤器(解决可以直接打开后台网址的问题)先创建filter包,然后新建LoginCheckFilter类(注意启动类要添加注解)   1@WebFilter(filterName="LoginCheckFilter",u......
  • 瑞吉外卖01
    1.创建数据库(导入sql文件)2.创建springboot项目,完成pom.xml依赖1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xm......
  • 移动手机高资费套餐到底怎样才能更改为低资费套餐?
    前言最近,拖延好几年的我,终于下定决心去营业厅更改套手机套餐资费了。我的手机套餐是【4G飞享套餐】,88/月,通话分钟数有 400分钟,但流量却只有700M,你敢信! 其实我也纳......