• 苍穹外卖Day02——总结2


    前期文章

    文章标题地址
    苍穹外卖Day01——总结1https://blog.csdn.net/qq_43751200/article/details/135466359?spm=1001.2014.3001.5501
    苍穹外卖Day01——解决总结1中存在的问题https://lushimeng.blog.csdn.net/article/details/135473412

    总结2

    • 前期文章
    • 1. 新增员工模块
      • 1.1 C(Create)、U(Update)、R(Retrivev)、 D(Delete)
      • 1.2 分页查询接口设计
      • 1.3 分页查询代码实现
    • 2. 分类管理模块
      • 2.1 C(Create)、U(Update)、R(Retrivev)、D(Delete)
    • 3. 总结
    • 4. 待补充内容....

    1. 新增员工模块

    员工管理整体界面效果

    在这里插入图片描述

    添加员工效果

    在这里插入图片描述

    修改员工信息效果

    在这里插入图片描述

    1.1 C(Create)、U(Update)、R(Retrivev)、 D(Delete)

    对于新增员工信息接口,一定要确定好以下内容:

    1. 请求接口路径设计;
    2. 请求方式;
    3. 请求的参数;
    4. 接口返回的结果;

    确定好上面四步后,以及MVC模型很容易进行接口开发。

    例如下面是请求接口设计:

    在这里插入图片描述

    返回数据:

    在这里插入图片描述

    1.2 分页查询接口设计

    在进行代码撰写的时候,发现分页查询还是存在不熟练问题,下面进行详细的流程阐述:

    业务规则

    • 根据页码展示员工信息
    • 每页展示10条数据
    • 分页查询时可以根据需要,输入员工姓名进行查询

    依据1.1中接口设计的四原则确定接口:在这里插入图片描述

    注意事项:

    • 请求参数类型为Query,不是json格式提交,在路径后直接拼接。/admin/employee/page?name=zhangsan
    • 返回数据中records数组中使用Employee实体类对属性进行封装。

    1.3 分页查询代码实现

    设计前端传值到后端的DTO:

    package com.sky.dto;
    
    import lombok.Data;
    
    import java.io.Serializable;
    
    @Data
    public class EmployeePageQueryDTO implements Serializable {
    
        //员工姓名
        private String name;
    
        //页码
        private int page;
    
        //每页显示记录数
        private int pageSize;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    封装PageResult: 后面所有的分页查询,统一都封装为PageResult对象。

    package com.sky.result;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    import java.io.Serializable;
    import java.util.List;
    
    /**
     * 封装分页查询结果
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class PageResult implements Serializable {
    
        private long total; //总记录数
    
        private List records; //当前页数据集合
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    员工信息分页查询后端返回的对象类型为: Result

    package com.sky.result;
    
    import lombok.Data;
    
    import java.io.Serializable;
    
    /**
     * 后端统一返回结果
     * @param 
     */
    @Data
    public class Result<T> implements Serializable {
    
        private Integer code; //编码:1成功,0和其它数字为失败
        private String msg; //错误信息
        private T data; //数据
    
        public static <T> Result<T> success() {
            Result<T> result = new Result<T>();
            result.code = 1;
            return result;
        }
    
        public static <T> Result<T> success(T object) {
            Result<T> result = new Result<T>();
            result.data = object;
            result.code = 1;
            return result;
        }
    
        public static <T> Result<T> error(String msg) {
            Result result = new Result();
            result.msg = msg;
            result.code = 0;
            return result;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    Controller层

    /**
         * 员工分页查询
         * @param employeePageQueryDTO
         * @return
         */
        @GetMapping("/page")
        @ApiOperation("员工分页查询")
        public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){
            log.info("员工分页查询,参数为:{}", employeePageQueryDTO);
            PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);//后续定义
            return Result.success(pageResult);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Service层接口

    /**
         * 分页查询
         * @param employeePageQueryDTO
         * @return
         */
        PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Service层实现类

    /**
         * 分页查询
         *
         * @param employeePageQueryDTO
         * @return
         */
        public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) {
            // select * from employee limit 0,10
            //开始分页查询
            PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
    
            Page<Employee> page = employeeMapper.pageQuery(employeePageQueryDTO);//后续定义
    
            long total = page.getTotal();
            List<Employee> records = page.getResult();
    
            return new PageResult(total, records);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    Mapper层

    /**
         * 分页查询
         * @param employeePageQueryDTO
         * @return
         */
        Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在 src/main/resources/mapper/EmployeeMapper.xml 中编写SQL:

    <select id="pageQuery" resultType="com.sky.entity.Employee">
            select * from employee
            <where>
                <if test="name != null and name != ''">
                    and name like concat('%',#{name},'%')
                </if>
            </where>
            order by create_time desc
        </select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2. 分类管理模块

    分类管理前端页面

    在这里插入图片描述

    新增菜品分类 和 新增套餐分类

    在这里插入图片描述

    在这里插入图片描述

    修改分类

    在这里插入图片描述

    2.1 C(Create)、U(Update)、R(Retrivev)、D(Delete)

    依据接口设计的四原则

    1. 确定接口请求路径设计;
    2. 确定请求方式;
    3. 确定请求的参数;
    4. 去顶接口返回的结果;

    3. 总结

    1. 后端的主要任务是进行CURD操作,依据MVC模型,层层递进;
    2. 一般企业会先进行接口设计:会确认请求方式、请求参数以及返回数据类型。在前端数据插入到后端时一般需要DTO类型数据,后端数据传到前端需要VO数据类型;
    3. 为了统一返回类型,一般使用自定义类Result:(code,msg,data)
    4. 常量类设计,一般进行统一的封装,便于统一进行修改。

    4. 待补充内容…

    1. BeanUtils类:在项目中使用了该对象属性拷贝方法copyProperties;
    2. DigestUtils类:对用户密码进行MD5加密之后再插入到数据库中;
    3. LocalDateTime类;
    4. ThreadLocal类:在项目中主要是在添加人员信息时需要获取创建人id,使用ThreadLocal类可以访问登录人员的id信息;
    5. 了解扩展Spring MVC框架的消息转化器;
  • 相关阅读:
    出入库管理系统vue2前端开发服务器地址配置
    Vue3的异步组件使用
    【综合类型第 39 篇】HTTP 状态码详解
    网络语言错误是指在编程中出现的错误或故障,导致程序无法正常运行或产生意外的结果
    基于Javaweb的商铺租赁管理系统/租赁管理系统
    忘记过滤.idea文件导致maven管理错误一系列操作...
    从入门到进阶再到展望未来,业内大咖纯手写微服务笔记是真的全
    Python常用视频编辑操作——读取与保存视频、更改帧数、拼接视频、视频语音合并、视频与图像互转等
    C语言航路外传之如何隐藏代码及声明和定义的在工程中真正的使用场景
    SSM整合
  • 原文地址:https://blog.csdn.net/qq_43751200/article/details/135484126