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 Rsave(@RequestBody Category category){ log.info("category:{}",category); categoryService.save(category); return R.success("新增分类成功"); }}
二. 分类信息分页查询
分页查询与之前的员工信息查询是一样的,直接上代码:
@GetMapping("/page") public Rpage(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 ServiceImplimplements 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 RexceptionHandler(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 Rupdate(@RequestBody Category category){ log.info("修改分类信息{}" + category); categoryService.updateById(category); return R.success("分类修改成功");}
以上就是关于"Java新增菜品与分页查询怎么实现"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
分类
菜品
套餐
查询
关联
代码
信息
内容
后台
实体
数据
系统
名称
管理
成功
价格
员工
图片
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发财务报表
数据包与网络数据库成本对比
服务器站点管理
晨智数据库
软件开发合同审核意见
传奇服务器怎么解决
河南数据库系统工程师试题
方舟服务器龙会饿死吗
无线网络安全技术课堂作业
中国期刊数据库有几个
本科毕业软件开发工资待遇
迈田网络技术有限公司怎么样
网络安全信息资产管理办法
管理系统软件开发流程
我的世界正在从服务器
无法与服务器安全了解
c 软件开发招工信息6
db数据库系统表
软件开发 变量设计文档
数据库原理填空与选择
java 数据库链接
无名杀本地服务器未运行
arc em9d软件开发
喵眼精灵服务器繁忙
如何查看sql数据库日志
传奇服务器设置活动时间
武研所的软件开发加班严重吗
我的世界服务器如何设置管理
32岁纯软件开发转嵌入式
软件开发超税负即征即退