中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java新增菜品與分頁查詢怎么實現

發布時間:2022-05-13 09:07:37 來源:億速云 閱讀:252 作者:iii 欄目:開發技術

這篇“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;
    /**
     * 分類
     */
    @Data
    public 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<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;
    /**
     菜品
     */
    @Data
    public 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;
    /**
     * 套餐
     */
    @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;
    }

    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
     */
    @Service
    public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements CategoryService {
        @Resource
        private DishService dishService;
        @Resource
        private SetmealService setmealService;
        /**
         * 根據ID刪除分類,分類之前需要判斷
         * @param id
         */
        @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);
        }
    }

    前面自定義異常類中加入:

    /**
         * 異常處理方法
         * @param customException
         * @return
         */
        @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;
    /**
     * @author jektong
     * @date 2022年05月10日 22:26
     */
    public class CustomException extends RuntimeException{
        public CustomException(String msg){
            super(msg);
        }
    }

    四. 修改分類

    修改分類很簡單,根據分類ID修改就可以了,代碼如下:

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

    以上就是關于“Java新增菜品與分頁查詢怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    通许县| 长子县| 无极县| 巨野县| 栾城县| 阿克陶县| 宾川县| 霸州市| 津南区| 游戏| 昭平县| 大新县| 石林| 登封市| 神木县| 无极县| 全椒县| 贺州市| 库尔勒市| 凌源市| 颍上县| 井冈山市| 平乐县| 正安县| 安岳县| 榆中县| 邹平县| 徐州市| 甘南县| 天峻县| 沙雅县| 南陵县| 和硕县| 沅江市| 榆树市| 巧家县| 全南县| 曲靖市| 新营市| 商河县| 桑植县|