Javaweb之SpringBootWeb案例新增部门的详细解析

发布时间:2024年01月14日

2.3 删除部门

查询部门的功能我们搞定了,下面我们开始完成删除部门的功能开发。

2.3.1 需求

点击部门列表后面操作栏的 "删除" 按钮,就可以删除该部门信息。 此时,前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也可以看得出来。

2.3.2 接口文档

删除部门

  • 基本信息

    请求路径:/depts/{id}
    ?
    请求方式:DELETE
    ?
    接口描述:该接口用于根据ID删除部门数据
  • 请求参数 参数格式:路径参数

    参数说明:

    参数名类型是否必须备注
    idnumber必须部门ID

    请求参数样例:

    /depts/1
  • 响应数据 参数格式:application/json

    参数说明:

    参数名类型是否必须备注
    codenumber必须响应码,1 代表成功,0 代表失败
    msgstring非必须提示信息
    dataobject非必须返回的数据

    响应数据样例:

    {
     ? ?"code":1,
     ? ?"msg":"success",
     ? ?"data":null
    }

2.3.3 思路分析

接口文档规定:

  • 前端请求路径:/depts/{id}

  • 前端请求方式:DELETE

问题1:怎么在controller中接收请求路径中的路径参数?

@PathVariable

问题2:如何限定请求方式是delete?

@DeleteMapping

2.3.4 功能开发

通过查看接口文档:删除部门

请求路径:/depts/{id}

请求方式:DELETE

请求参数:路径参数 {id}

响应数据:json格式

DeptController

@Slf4j
@RestController
public class DeptController {
 ? ?@Autowired
 ? ?private DeptService deptService;
?
 ? ?@DeleteMapping("/depts/{id}")
 ? ?public Result delete(@PathVariable Integer id) {
 ? ? ? ?//日志记录
 ? ? ? ?log.info("根据id删除部门");
 ? ? ? ?//调用service层功能
 ? ? ? ?deptService.delete(id);
 ? ? ? ?//响应
 ? ? ? ?return Result.success();
 ?  }
 ? ?
 ? ?//省略...
}

DeptService

public interface DeptService {
?
 ? ?/**
 ? ? * 根据id删除部门
 ? ? * @param id ?  部门id
 ? ? */
 ? ?void delete(Integer id);
?
 ? ?//省略...
}

DeptServiceImpl

@Slf4j
@Service
public class DeptServiceImpl implements DeptService {
 ? ?@Autowired
 ? ?private DeptMapper deptMapper;
?
 ? ?@Override
 ? ?public void delete(Integer id) {
 ? ? ? ?//调用持久层删除功能
 ? ? ? ?deptMapper.deleteById(id);
 ?  }
 ? ?
 ? ?//省略...
}

DeptMapper

@Mapper
public interface DeptMapper {
 ? ?/**
 ? ? * 根据id删除部门信息
 ? ? * @param id ? 部门id
 ? ? */
 ? ?@Delete("delete from dept where id = #{id}")
 ? ?void deleteById(Integer id);
 ? 
 ? ?//省略...
}

2.3.5 功能测试

删除功能开发完成后,重新启动项目,使用postman,发起DELETE请求:

2.3.6 前后端联调

打开浏览器,测试后端功能接口:

文章来源:https://blog.csdn.net/qq_69748833/article/details/135578089
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。