• SpringBoot启用禁用员工/员工分页查询/编辑员工 --苍穹外卖day3


    启用禁用员工

    Controller

    路径参数前面加上@Path~注解来获取参数

    @PostMapping("/status/{status}")
    @ApiOperation("启用禁用员工")
    public Result StartOrStop(@PathVariable("status") Integer status, Long id){
        log.info("启用禁用");
        employeeService.StartOrStop(status,id);
        return Result.success();
    }

    Service

    创建一个完整的类方便mapper插入数据.用于层之间交换数据方便

    使用builder需要加上@builder注解在原类上,然后可以通过以下方式快速构建对象

    @Override
    public void StartOrStop(Integer status, Long id) {
    
         Employee employee = Employee.builder().status(status).id(id).build();
    
        employeeMapper.update(employee);
    }

    Mapper

    使用动态sql

    id="update"意思是将这段sql代码取名为update,这样以后可以直接以这个名字来调用

    parameterType="Employee"是指明,这个sql的传入参数是Emp格式,下面set的参数都会从中获取

    使用标签也可以防止sql注入

    
    
    update employee
      
      name = #{name},
      
     where id = #{id}
    
    

    员工分页查询

    Controller

    使用Dto类方便前端页面传入的数据和Controller层交互

    返回值使用Result.success中,可以返回Object类型的方法直接返回结果

    pageResult类含有: 数据条数/数据集合

    @GetMapping("/page")
    @ApiOperation("员工分页查询")
    public Result page(EmployeePageQueryDTO employeePageQueryDTO){
        log.info("员工分页查询,参数为{}",employeePageQueryDTO);
    
        PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);
    
        return Result.success(pageResult);
    }

    Service

    使用分页查询插件(PageHelper),传入页码和每页记录数

    这里的page<>中填入你的查询类,page是插件中自带的类,可以从中获取总记录数和结果,再封装到PageResult返回

        @Override
        public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) 
    {
       PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
    
            Page page =  employeeMapper.pageQuery(employeePageQueryDTO);
    
            long total = page.getTotal();
            List records = page.getResult();
            return new PageResult(total,records);
        }
    
    }
    

    Mapper

    resultType规定了数据结果的格式

    编辑员工

    Controller

    路径参数使用@PathVariable来接收

    @GetMapping("/{id}")
    @ApiOperation("查询员工信息")
    public  Result select(@PathVariable Long id){
        log.info("查询员工信息");
        Employee employee =  employeeService.select(id);
        return Result.success(employee);
    
    }
    
    @PutMapping
    @ApiOperation("修改员工")
    public Result update(@RequestBody EmployeeDTO employeeDTO){
        log.info("修改员工");
        employeeService.update(employeeDTO);
        return Result.success();
    }
    
    

    Service

    update此时使用的是employee而非DTO,这时候需要用到对象拷贝

    BeanUtils.copyProperties(employeeDTO,employee);

    new一个employee, 然后把属性拷贝到里面去

    @Override
    public Employee select(Long id) {
    
        return employeeMapper.select(id);
    }
    
    @Override
    public void update(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();
        BeanUtils.copyProperties(employeeDTO,employee);
        employeeMapper.update(employee);
    }

    Mapper

    @Select("select * from employee where id = #{id}")
    Employee select(Long id);
    
    void update(Employee employeeDTO);
  • 相关阅读:
    Apache Flume 1.9.0的安装和使用
    蓝桥杯官网练习题(斐波那契数列最大公约数)
    华为海思雄起!正出货国产监控镜头芯片 | 百能云芯
    springboot整合nacos
    03-Redis 凭什么这么快
    Synchronized锁详解
    想用PuTTY远程mininet打开wireshark,一直卡在下图位置,应该如何处理呢?
    LeetCode--快速排序
    【毕业设计】基于SSM酒店后台管理系统
    关于我对线程安全问题中死锁的理解
  • 原文地址:https://blog.csdn.net/TheresaApocaly/article/details/133217629