千家信息网

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

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇"Java新增菜品与分页查询怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2024年09月22日Java新增菜品与分页查询怎么实现

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

    一. 新增菜品

    1.1需求分析

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

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

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

    添加菜品分类

    添加套餐分类

    数据模型:

    涉及一张表Category表:

    表对应的数据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;/** * @author jektong * @date 2022年05月06日 21:47 */@RestController@Slf4j@RequestMapping("/category")public class CategoryController {    @Resource    private CategoryService categoryService;    /**     * 新增分类     * @param category     * @return     */    @PostMapping    public R save(@RequestBody Category category){        log.info("category:{}",category);        categoryService.save(category);        return R.success("新增分类成功");    }}

    二. 分类信息分页查询

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

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

    三. 删除分类

    3.1 需求分析

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

    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;/** * @author jektong * @date 2022年05月06日 21:44 */@Servicepublic class CategoryServiceImpl extends ServiceImpl implements CategoryService {    @Resource    private DishService dishService;    @Resource    private SetmealService setmealService;    /**     * 根据ID删除分类,分类之前需要判断     * @param id     */    @Override    public void remove(Long id) {        LambdaQueryWrapper dishLambdaQueryWrapper =  new LambdaQueryWrapper<>();        // 查询当前分类是否关联了菜品,若关联菜品,抛出异常        dishLambdaQueryWrapper.eq(Dish::getCategoryId,id);        int count = dishService.count(dishLambdaQueryWrapper);        if(count > 0){            // 已经关联菜品,抛出异常            throw new CustomException("当前分类已关联菜品,不可删除");        }        // 查询当前分类是否关联了套餐,若关联菜品,抛出异常        LambdaQueryWrapper setmealLambdaQueryWrapper =  new LambdaQueryWrapper<>();        setmealLambdaQueryWrapper.eq(Setmeal::getCategoryId,id);        int count1 = setmealService.count(setmealLambdaQueryWrapper);        if(count>0){            // 已经关联套餐,抛出异常            throw new CustomException("当前分类已关联套餐,不可删除");        }        // 正常删除分类        super.removeById(id);    }}

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

    /**     * 异常处理方法     * @param customException     * @return     */    @ExceptionHandler(CustomException.class)    public R exceptionHandler(CustomException customException){        log.error(customException.getMessage());        return R.error(customException.getMessage());    }

    CustomException.java

    package com.itheima.reggie.common;/** * @author jektong * @date 2022年05月10日 22:26 */public class CustomException extends RuntimeException{    public CustomException(String msg){        super(msg);    }}

    四. 修改分类

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

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

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

    0