部门删除功能还是一样的逻辑:mapper获取数据,service处理,controller响应。前面没有提到的一点,在开发时要看接口文档,所有的都会在接口文档里面,比如我为什么用“/depts”

一般开发时为了避免每个程序员命名习惯的不同而导致开发错误,一般会把每个功能的请求方式设置为不同,比如查询部门就用GET,删除部门就用DELETE,添加部门就用POST。不然在删除员工时,有人用“dept/name=Tom”,有人用"dept/username=Tom",这样就可以统一规范直接写“dept/Tom”然后请求方式是DELETE就可以了。

首先我们要先获取“DELETE http://localhost:8080/depts?id=1”里的id的值,这边有三种方法。

方法一:使用HttpServletRequest来获取参数

要注意的是,使用这个方法是,返回的是String类型,所以要转换成Integer类型

    @DeleteMapping("/depts")
    public Result delete(HttpServletRequest  request){
        String idStr = request.getParameter("id");
        int id = Integer.parseInt(idStr);
        System.out.println("删除id为"+id+"的部门信息");
        return Result.success();
    }

方法二:使用@RequestParam注解来获取参数

方法一首先要获取一个String类型,再转换成int类型,太麻烦了,使用@RequestParam注解就可以直接完成,使用方法为:@RequestParam("参数名") 数据类型 变量名。这样代码会简介很多。

    @DeleteMapping("/depts")
    public Result delete(@RequestParam("id") Integer id){
        System.out.println("删除id为"+id+"的部门信息");
        return Result.success();
    }

方法三:使用形参来获取参数

这也是最常用的方法,只要形参名和参数名是一样,注解可以直接省略,效果一样。

    @DeleteMapping("/depts")
    public Result delete(Integer id){
        System.out.println("删除id为"+id+"的部门信息");
        return Result.success();
    }

获取完参数之后,我们就可以进行数据库操作了,和查询功能大差不差。

因为是删除操作,所以Result里面不需要返回data,直接调用success的无参构造就可以了

    @DeleteMapping("/depts")
    public Result delete(Integer id){
        deptService.delete(id);
        return Result.success();
    }

然后在DeptService.java里面创建delete的方法,直接“ctrl + i”进行构造。

 void delete(Integer id);

之后就需要在实现类里面来实现这个方法,这个方法是干什么的呢?没错,需要调用mapper里面的数据库操作方法来删除部门。

DeptServiceImpl.java

    @Override
    public void delete(Integer id) {
        deptMapper.deleteById(id);
    }

就差最后一步了,DeptMapper里面没有deleteById()这个方法,创造一个。

    @Delete("delete from dept where id=#{id}")
    void deleteById(Integer id);

这样删除部门的操作就完成了,通过APIFox进行调试后也是成功执行。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐