目录
部门管理
开发的部门管理功能包含:
1. 查询部门2. 删除部门3. 新增部门4. 更新部门
查询部门
1.原型和需求
查询的部门的信息:部门ID、部门名称、修改时间
通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑分页操作的。
2.接口文档
部门列表查询
基本查询
响应数据
响应数据样例:
~~~json
{
"code": 1,
"msg": "success",
"data": [
{
"id": 1,
"name": "学工部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
},
{
"id": 2,
"name": "教研部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
}
]
}
~~~
3.思路分析
4.功能开发
DeptController
@Slf4j注解源码:
DeptService(业务接口)
DeptServiceImpl(业务实现类)
DeptMapper
5.功能测试
功能开发完成后,我们就可以启动项目,然后打开postman,发起GET请求,访问 :http://localhost:8080/depts
前后端联调
完成了查询部门的功能,我们也通过postman工具测试通过了,下面我们再基于前后端分离的方式进行接口联调。具体操作如下:
启动nginx,打开浏览器,访问:http://localhost:90
测试:部门管理 - 查询部门列表
说明:只要按照接口文档开发功能接口,就能保证前后端程序交互
删除部门
1.需求
点击部门列表后面操作栏的 "删除" 按钮,就可以删除该部门信息。 此时,前端只需要给服务端传递一个ID参数就可以。
2.接口文档
删除部门
基本信息
请求参数
响应数据
参数格式:application/json
参数说明:
3.思路分析
问题1:怎么在controller中接收请求路径中的路径参数?
@PathVariable
问题2:如何限定请求方式是delete?
@DeleteMapping
4. 功能开发
DeptController
~~~java
@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
~~~java
public interface DeptService {
/**
* 根据id删除部门
* @param id 部门id
*/
void delete(Integer id);
}
~~~
DeptServiceImpl
~~~java
@Slf4j
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public void delete(Integer id) {
//调用持久层删除功能
deptMapper.deleteById(id);
}
}
~~~
DeptMappe
~~~java
@Mapper
public interface DeptMapper {
/**
* 根据id删除部门信息
* @param id 部门id
*/
@Delete("delete from dept where id = #{id}")
void deleteById(Integer id);
}
~~~
5. 功能测试
删除功能开发完成后,重新启动项目,使用postman,发起DELETE请求:
6.前后端联调
打开浏览器,测试后端功能接口
新增部门
1.需求
点击 "新增部门" 按钮,弹出新增部门对话框,输入部门名称,点击 "保存" ,将部门信息保存到数据库。
2.接口文档
添加部门
基本信息
请求参数
参数说明:
3.思路分析
问题1:如何限定请求方式是POST?
@PostMapping
问题2:怎么在controller中接收json格式的请求参数?
@RequestBody //把前端传递的json数据填充到实体类中
4.功能开发
DeptController
~~~java
@Slf4j
@RestController
public class DeptController {
@Autowired
private DeptService deptService;
@PostMapping("/depts")
public Result add(@RequestBody Dept dept){
//记录日志
log.info("新增部门:{}",dept);
//调用service层添加功能
deptService.add(dept);
//响应
return Result.success();
}
}
~~~
DeptService
~~~java
public interface DeptService {
/**
* 新增部门
* @param dept 部门对象
*/
void add(Dept dept);
}
~~~
DeptServiceImpl
~~~java
@Slf4j
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public void add(Dept dept) {
//补全部门数据
dept.setCreateTime(LocalDateTime.now());
dept.setUpdateTime(LocalDateTime.now());
//调用持久层增加功能
deptMapper.inser(dept);
}
}
~~~
DeptMapper
~~~java
@Mapper
public interface DeptMapper {
@Insert("insert into dept (name, create_time, update_time) values (#{name},#{createTime},#{updateTime})")
void inser(Dept dept);
}
~~~
5.功能测试
新增功能开发完成后,重新启动项目,使用postman,发起POST请求:
6.前后端联调
打开浏览器,测试后端功能接口