Javaweb之SpringBootWeb案例员工管理之删除员工的详细解析

发布时间:2024年01月20日

3.3 删除员工

查询员完成之后,我们继续开发新的功能:删除员工。

3.3.1 需求

当我们勾选列表前面的复选框,然后点击 "批量删除" 按钮,就可以将这一批次的员工信息删除掉了。也可以只勾选一个复选框,仅删除一个员工信息。

问题:我们需要开发两个功能接口吗?一个删除单个员工,一个删除多个员工

答案:不需要。 只需要开发一个功能接口即可(删除多个员工包含只删除一个员工)

3.3.2 接口文档

删除员工

  • 基本信息

    请求路径:/emps/{ids}
    ?
    请求方式:DELETE
    ?
    接口描述:该接口用于批量删除员工的数据信息
  • 请求参数

    参数格式:路径参数

    参数说明:

    参数名类型示例是否必须备注
    ids数组 array1,2,3必须员工的id数组

    请求参数样例:

    /emps/1,2,3
  • 响应数据

    参数格式:application/json

    参数说明:

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

    响应数据样例:

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

3.3.3 思路分析

接口文档规定:

  • 前端请求路径:/emps/{ids}

  • 前端请求方式:DELETE

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

@PathVariable

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

@DeleteMapping

问题3:在Mapper接口中,执行delete操作的SQL语句时,条件中的id值是不确定的是动态的,怎么实现呢?

Mybatis中的动态SQL:foreach

3.3.4 功能开发

通过查看接口文档:删除员工

请求路径:/emps/{ids}

请求方式:DELETE

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

响应数据:json格式

EmpController

@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
?
 ? ?@Autowired
 ? ?private EmpService empService;
?
 ? ?//批量删除
 ? ?@DeleteMapping("/{ids}")
 ? ?public Result delete(@PathVariable List<Integer> ids){
 ? ? ? ?empService.delete(ids);
 ? ? ? ?return Result.success();
 ?  }
?
 ? ?//条件分页查询
 ? ?@GetMapping
 ? ?public Result page(@RequestParam(defaultValue = "1") Integer page,
 ? ? ? ? ? ? ? ? ? ? ? @RequestParam(defaultValue = "10") Integer pageSize,
 ? ? ? ? ? ? ? ? ? ? ? String name, Short gender,
 ? ? ? ? ? ? ? ? ? ? ? @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
 ? ? ? ? ? ? ? ? ? ? ? @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
 ? ? ? ?//记录日志
 ? ? ? ?log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize,name, gender, begin, end);
 ? ? ? ?//调用业务层分页查询功能
 ? ? ? ?PageBean pageBean = empService.page(page, pageSize, name, gender, begin, end);
 ? ? ? ?//响应
 ? ? ? ?return Result.success(pageBean);
 ?  }
}

EmpService

public interface EmpService {
?
 ? ?/**
 ? ? * 批量删除操作
 ? ? * @param ids id集合
 ? ? */
 ? ?void delete(List<Integer> ids);
?
 ? ?//省略...
}

EmpServiceImpl

@Slf4j
@Service
public class EmpServiceImpl implements EmpService {
 ? ?@Autowired
 ? ?private EmpMapper empMapper;
?
 ? ?@Override
 ? ?public void delete(List<Integer> ids) {
 ? ? ? ?empMapper.delete(ids);
 ?  }
?
 ? ?//省略...
}

EmpMapper

@Mapper
public interface EmpMapper {
 ? ?//批量删除
 ? ?void delete(List<Integer> ids);
?
 ? ?//省略...
}

EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 ? ? ? ?PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 ? ? ? ?"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.EmpMapper">
?
 ? ?<!--批量删除员工-->
 ? ?<select id="delete">
 ? ? ?  delete from emp where id in
 ? ? ? ?<foreach collection="ids" item="id" open="(" close=")" separator=",">
 ? ? ? ? ?  #{id}
 ? ? ? ?</foreach>
 ? ?</select>
?
 ? ?<!-- 省略... -->
?
</mapper>

3.3.5 功能测试

功能开发完成后,重启项目工程,打开postman,发起DELETE请求:

控制台SQL语句:

3.3.6 前后端联调

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

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