Heim > Java > javaLernprogramm > So implementieren Sie neue Gerichte und Paging-Abfragen in Java

So implementieren Sie neue Gerichte und Paging-Abfragen in Java

PHPz
Freigeben: 2023-05-20 13:10:06
nach vorne
882 Leute haben es durchsucht

    1. Neu hinzugefügte Gerichte

    1.1 Bedarfsanalyse

    Das Hintergrundsystem kann klassifiziert verwalten Informationen, klassifizieren Sie Gerichte in Kategorien und stellen Sie Mahlzeiten in Kategorien ein. Wenn wir Gerichte im Backend-System hinzufügen, müssen wir eine Gerichtskategorie auswählen.

    Wenn wir im Backend-System ein Menü hinzufügen, müssen wir eine Menükategorie auswählen. Die entsprechenden Gerichte und Menüs werden entsprechend der Gerichtskategorie und dem Menü angezeigt Kategorie.

    So implementieren Sie neue Gerichte und Paging-Abfragen in Java

    Fügen Sie gleichzeitig die Gerichtskategorie bzw. die Paketkategorie auf der Kategorieverwaltungsseite des Backend-Systems hinzu:

    #🎜🎜 #Gerichtskategorie hinzufügen#🎜 🎜#

    So implementieren Sie neue Gerichte und Paging-Abfragen in JavaPaketkategorie hinzufügen

    So implementieren Sie neue Gerichte und Paging-Abfragen in JavaDatenmodell:

    #🎜 🎜#Beinhaltet eine Tabelle Kategorietabelle:

    Die der Tabelle entsprechende Daten-JavaBean ist Category.javaSo implementieren Sie neue Gerichte und Paging-Abfragen in 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;
    }
    Nach dem Login kopieren

    Der spezifische Rahmen bezieht sich auf die vorherige Konstruktion der Employee-Entität.

    1.2 Codeentwicklung

    Die für die Klassifizierung neuer Gerichte und Pakete angeforderte Dienstadresse ist dieselbe wie die übermittelte JSON-Datenstruktur. Der Server muss nur eine Methode bereitstellen: # 🎜 🎜# # 🎜🎜#URL anfordern

    /Kategorie

    Daten anfordern
    { "Name" : „Sichuan-Küche“, „Typ“: „1“, „Sortierung“: „1“ #🎜 🎜#Code
    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("新增分类成功");
        }
    }
    Nach dem Login kopieren
    Paging-Abfrage mit früheren Mitarbeitern Die Informationsabfrage ist die gleiche, gehen Sie direkt zum Code:
    @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);
        }
    Nach dem Login kopieren
    API
    }
    Neuen Code in CategoryController.java schreiben: 2. Paging-Abfrage von Kategorieinformationen
    3. Kategorie löschen 3.1 Bedarfsanalyse

    Auf der Kategorieverwaltungslistenseite können Sie eine bestimmte Kategorie löschen. Bitte beachten Sie, dass eine Kategorie, die mit einem Gericht oder Menü verknüpft ist, nicht gelöscht werden kann.

    Beschreibung

    Wert

    Anfrage-URL

    /category?id=

    So implementieren Sie neue Gerichte und Paging-Abfragen in Java#🎜 🎜#Sie müssen zwei Entitäten einführen: Dish und Set Meal:

    Dish.java: Dish Entity

    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;
    }
    Nach dem Login kopieren
    Setmeal.java:set Meal Entity
    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;
    }
    Nach dem Login kopieren
    # 🎜🎜# 3.2 Kerncode
    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);
        }
    }
    Nach dem Login kopieren
    /**
         * 异常处理方法
         * @param customException
         * @return
         */
        @ExceptionHandler(CustomException.class)
        public R<String> exceptionHandler(CustomException customException){
            log.error(customException.getMessage());
            return R.error(customException.getMessage());
        }
    Nach dem Login kopieren
    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);
        }
    }
    Nach dem Login kopieren
    #🎜 🎜#4. Ändern Sie die Klassifizierung Ändern Sie die Klassifizierung einfach entsprechend der Klassifizierungs-ID. Der Code lautet wie folgt:
    CategoryServiceImpl.java Zur vorherigen benutzerdefinierten Ausnahmeklasse hinzugefügt:
    @PutMapping
    public R<String> update(@RequestBody Category category){
      log.info("修改分类信息{}" + category);
      categoryService.updateById(category);
      return R.success("分类修改成功");
    }
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie neue Gerichte und Paging-Abfragen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage