文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java新增菜品与分页查询怎么实现

2023-06-30 13:56

关注

这篇“Java新增菜品与分页查询怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java新增菜品与分页查询怎么实现”文章吧。

一. 新增菜品

1.1需求分析

后台系统可以管理分类信息,分类菜品分类和套餐分类。当我们在后台系统添加菜品时需要选择一个菜品分类。

当我们在后台系统中添加一个套餐时需要选择一个套餐分类,在移动端也会按照菜品分类和套餐分类来展示对应的菜品和套餐。

Java新增菜品与分页查询怎么实现

同时,在后台系统的分类管理页面分别添加菜品分类与套餐分类:

添加菜品分类

Java新增菜品与分页查询怎么实现

添加套餐分类

Java新增菜品与分页查询怎么实现

数据模型:

涉及一张表Category表:

Java新增菜品与分页查询怎么实现

表对应的数据JavaBean为Category.java

Category.java

package com.itheima.reggie.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 lombok.Getter;import lombok.Setter;import java.io.Serializable;import java.time.LocalDateTime;@Datapublic class Category implements Serializable {    private static final long serialVersionUID = 1L;    private Long id;    //类型 1 菜品分类 2 套餐分类    private Integer type;    //分类名称    private String name;    //顺序    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;}

具体架子参照前面的Employee员工实体的搭建。

1.2代码开发

新增菜品分类与套餐分类请求的服务地址与提交的JSON数据结构相同,服务端只需提供一个方法即可:

API
说明
请求URL/category
请求数据{
  "name": "川菜",
  "type": "1",
  "sort": "1"
}
代码

在CategoryController.java中编写新增代码:

package com.itheima.reggie.controller;import com.itheima.reggie.common.R;import com.itheima.reggie.entity.Category;import com.itheima.reggie.service.CategoryService;import lombok.extern.slf4j.Slf4j;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController@Slf4j@RequestMapping("/category")public class CategoryController {    @Resource    private CategoryService categoryService;        @PostMapping    public R<String> save(@RequestBody Category category){        log.info("category:{}",category);        categoryService.save(category);        return R.success("新增分类成功");    }}

二. 分类信息分页查询

分页查询与之前的员工信息查询是一样的,直接上代码:

@GetMapping("/page")    public R<Page> page(int page, int pageSize){        // 分页构造        Page<Category> pageInfo = new Page<Category>(page,pageSize);        // 查询并排序        LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper();        queryWrapper.orderByAsc(Category::getSort);        // 分页查询        categoryService.page(pageInfo,queryWrapper);        return R.success(pageInfo);    }

三. 删除分类

3.1 需求分析

在分类管理列表页面,可以对某个分类进行删除操作。需要注意的是当分类关联了菜品或者套餐时,此分类不允许删除。

Java新增菜品与分页查询怎么实现

API

说明
请求URL/category?id=

需用引入菜品与套餐两个实体:

Dish.java:菜品实体

package com.itheima.reggie.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;@Datapublic class Dish implements Serializable {    private static final long serialVersionUID = 1L;    private Long id;    //菜品名称    private String name;    //菜品分类id    private Long categoryId;    //菜品价格    private BigDecimal price;    //商品码    private String code;    //图片    private String image;    //描述信息    private String description;    //0 停售 1 起售    private Integer status;    //顺序    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;}

Setmeal.java:套餐实体

package com.itheima.reggie.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;@Datapublic 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;}

3.2 核心代码

CategoryServiceImpl.java

package com.itheima.reggie.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.itheima.reggie.common.CustomException;import com.itheima.reggie.entity.Category;import com.itheima.reggie.entity.Dish;import com.itheima.reggie.entity.Setmeal;import com.itheima.reggie.mapper.CategoryMapper;import com.itheima.reggie.service.CategoryService;import com.itheima.reggie.service.DishService;import com.itheima.reggie.service.SetmealService;import org.springframework.stereotype.Service;import javax.annotation.Resource;@Servicepublic class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {    @Resource    private DishService dishService;    @Resource    private SetmealService setmealService;        @Override    public void remove(Long id) {        LambdaQueryWrapper<Dish> dishLambdaQueryWrapper =  new LambdaQueryWrapper<>();        // 查询当前分类是否关联了菜品,若关联菜品,抛出异常        dishLambdaQueryWrapper.eq(Dish::getCategoryId,id);        int count = dishService.count(dishLambdaQueryWrapper);        if(count > 0){            // 已经关联菜品,抛出异常            throw new CustomException("当前分类已关联菜品,不可删除");        }        // 查询当前分类是否关联了套餐,若关联菜品,抛出异常        LambdaQueryWrapper<Setmeal> setmealLambdaQueryWrapper =  new LambdaQueryWrapper<>();        setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId,id);        int count1 = setmealService.count(setmealLambdaQueryWrapper);        if(count>0){            // 已经关联套餐,抛出异常            throw new CustomException("当前分类已关联套餐,不可删除");        }        // 正常删除分类        super.removeById(id);    }}

前面自定义异常类中加入:

    @ExceptionHandler(CustomException.class)    public R<String> exceptionHandler(CustomException customException){        log.error(customException.getMessage());        return R.error(customException.getMessage());    }

CustomException.java

package com.itheima.reggie.common;public class CustomException extends RuntimeException{    public CustomException(String msg){        super(msg);    }}

四. 修改分类

修改分类很简单,根据分类ID修改就可以了,代码如下:

@PutMappingpublic R<String> update(@RequestBody Category category){  log.info("修改分类信息{}" + category);  categoryService.updateById(category);  return R.success("分类修改成功");}

以上就是关于“Java新增菜品与分页查询怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯