当前位置: 首页 > news >正文

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

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 {
​@Autowiredprivate EmpService empService;
​//批量删除@DeleteMapping("/{ids}")public Result delete(@PathVariable List<Integer> ids){empService.delete(ids);return Result.success();}
​//条件分页查询@GetMappingpublic 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 {@Autowiredprivate EmpMapper empMapper;
​@Overridepublic 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 mapperPUBLIC "-//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 前后端联调

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

http://www.lryc.cn/news/284074.html

相关文章:

  • 写点东西《什么是网络抓取?》
  • 使用C#操作文件:一个实际案例——替换文件中的IP地址
  • Zookeeper简介
  • 第33集《佛法修学概要》
  • C++ 之LeetCode刷题记录(十三)
  • 容器技术1-容器与镜像简介
  • openssl3.2 - 官方demo学习 - smime - smdec.c
  • vue中改变v-html中包含body标签的样式修改方法
  • 港科夜闻|香港科大团队研发多功能,可重构和抗破坏单线感测器阵列
  • 线程池的简单介绍及使用
  • 使用Python的pygame库实现下雪的效果
  • qt学习:进度条,水平滑动条,垂直滑动条+rgb调试实战
  • C语言中的浮点数存储
  • Pypputeer自动化
  • selenium爬虫爬取当当网书籍信息 | 最新!
  • PTA 7-1 最大子列和问题
  • JAVA实现向Word模板中插入Base64图片和数据信息
  • 深入浅出关于go web的请求路由
  • HarmonyOS—开发环境诊断的功能
  • Golang个人web框架开发-学习流程
  • java面试题(23):Spring Bean如何保证并发安全
  • HarmonyOS【应用服务开发】在模块中添加Ability
  • 根据屏幕尺寸设置html根字号fontSize大小并刷新
  • Flutter 中的 InteractiveViewer:轻松实现交互性
  • UE4 添加按键输入事件 并在蓝图中使用按键输入节点
  • Go 语言命名规范:清晰、简洁、一致
  • 代码随想录训练营第三十期|第十天|栈与队列part01|理论基础● 232.用栈实现队列● 225. 用队列实现栈
  • Backtrader 文档学习-Indicators混合时间框架
  • 网络攻击与检测防御:维护数字安全的关键挑战
  • 使用 Vector 在 Kubernetes 中收集日志