目录
[1.1 简单请求参数接收的三种方式](#1.1 简单请求参数接收的三种方式)
[1.2 三层架构实现](#1.2 三层架构实现)
[2.1 Json格式的请求参数的接收编辑](#2.1 Json格式的请求参数的接收编辑)
[2.2 三层架构实现](#2.2 三层架构实现)
[3.1 路径参数的接收](#3.1 路径参数的接收)
[3.2 查询回显](#3.2 查询回显)
[3.3 修改数据](#3.3 修改数据)
一、删除部门
1.1 简单请求参数接收的三种方式

在之前的文章当中,我们基本上实现的都是后端不接收参数的功能实现,如果我们想要接收前端带来的参数,比如要实现删除部门的操作,我们需要一个id来唯一标识想要删除的部门,那么这个id值后端的Controller层应该如何接收呢?
有三种接收简单请求参数的方式:
方式一 :通过原始的HttpServletRequest对象获取请求参数。
java
@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();
}
通过HttpServletRequest对象接收的参数类型是String类型,需要手动转换类型,步骤繁琐。
方式二:通过Spring提供的**@RequestParam** 注解,将请求参数绑定给形参。
java
/*
方式二:通过Spring提供的@RequestParam注解将接收的参数绑定给形参
*/
@DeleteMapping("/depts")
public Result delete(@RequestParam("id") Integer deptId){
System.out.println("要删除的部门id为:" + deptId);
return Result.success();
}
方式三 :如果 **请求参数名** 和 **形参变量名** 相同,直接定义方法形参即可接收,省略@RequestParam 注解。
java
@DeleteMapping("/depts")
public Result delete(Integer id){
deptService.deleteById(id);
return Result.success();
}
1.2 三层架构实现
Controller层在上面已经实现了,接下来应该实现业务逻辑层Service层,以及数据持久化层Mapper层。
Service层:
java
@Override
public void deleteById(Integer id) {
deptMapper.deleteById(id);
}
Mapper层:
在这里使用预编译SQL,来防止SQL注入问题。
java
@Delete("delete from tilas.dept where id = #{id}")
void deleteById(Integer id);
二、新增部门
2.1 Json格式的请求参数的接收
JSON格式的参数,通常会使用一个实体对象进行接收。
规则:JSON数据的 键名 与方法形参 对象的属性名 相同,并需要使用**@RequestBody**注解标识。
2.2 三层架构实现
Controller层:
java
@PostMapping("/depts")
public Result add(@RequestBody Dept dept){
System.out.println("添加部门信息为:" + dept);
deptService.add(dept);
return Result.success();
}
Service层:
由于只接收到了name属性,createTime和updateTime未接收到,需要在Service层中进行设置。
java
@Override
public void add(Dept dept) {
dept.setCreateTime(LocalDateTime.now());
dept.setUpdateTime(LocalDateTime.now());
deptMapper.add(dept);
}
Mapper层:
java
@Insert("insert into tilas.dept(name, create_time, update_time) VALUES (#{name}, #{createTime}, #{updateTime})")
void add(Dept dept);
三、修改部门
3.1 路径参数的接收

路径参数:通过请求URL直接传递参数,使用**{...}**来标识该路径参数,需要使用 @PathVariable 获取。

如果方法形参的参数名与PathVariable的value值相同,value可以省略。
3.2 查询回显

Controller层:
java
@GetMapping("/depts/{id}")
public Result getInfo(@PathVariable Integer id){
Dept dept = deptService.getById(id);
return Result.success(dept);
}
Service层:
java
@Override
public Dept getById(Integer id) {
return deptMapper.getById(id);
}
Mapper层:
java
@Select("select id, name, create_time, update_time from tilas.dept where id = #{id}")
Dept getById(Integer id);
3.3 修改数据
Controller层:
接收的数据格式为:
java{ "id" : "8", "name" : "财务部" }需要使用*@RequestBody**注解接收JSON格式,并封装成Dept对象。*
java
@PutMapping("/depts")
public Result update(@RequestBody Dept dept){
deptService.update(dept);
return Result.success();
}
Service层:
由于进行了修改,updateTime字段值也要进行修改。
java
@Override
public void update(Dept dept) {
dept.setUpdateTime(LocalDateTime.now());
deptMapper.update(dept);
}
Mapper层:
java
@Update("update tilas.dept set name = #{name}, update_time = #{updateTime} where id = #{id}")
void update(Dept dept);