JavaWeb--15 tlias-web-management 黑马程序员 部门管理(修改部门信息)

卷末 2024-07-17 17:03:03 阅读 58

tlias

1 需求分析和开发规范2 部门管理2.1 查询部门2.2 删除部门2.3 添加部门2.4 更新部门

1 需求分析和开发规范

需求说明–接口文档–思路分析–开发–测试–前后端联调

查看页面原型明确需求

根据页面原型和需求,进行表结构设计、编写接口文档(已提供)

阅读接口文档

思路分析

功能接口开发

就是开发后台的业务功能,一个业务功能,我们称为一个接口

功能接口测试

功能开发完毕后,先通过Postman进行功能接口测试,测试通过后,再和前端进行联调测试

前后端联调测试

和前端开发人员开发好的前端工程一起测试

1 开发规范-Restful

<code>http://localhost:8080/users/1 GET:查询id为1的用户

http://localhost:8080/users POST:新增用户

http://localhost:8080/users PUT:修改用户

http://localhost:8080/users/1 DELETE:删除id为1的用户

在REST风格的URL中,通过四种请求方式,来操作数据的增删改查。

GET : 查询POST :新增PUT :修改DELETE :删除

2 开发规范-统一响应结果 Result

package com.itheima.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Result {

private Integer code;//响应码,1 代表成功; 0 代表失败

private String msg; //响应信息 描述字符串

private Object data; //返回的数据

//增删改 成功响应

public static Result success(){

return new Result(1,"success",null);

}

//查询 成功响应

public static Result success(Object data){

return new Result(1,"success",data);

}

//失败响应

public static Result error(String msg){

return new Result(0,msg,null);

}

}

创建项目工程目录结构:

controller:控制层。存放控制器Controller

mapper:持久层/数据访问层。存放mybatis的Mapper接口

pojo:存放实体类

service:业务层。存放业务代码

第1步:准备数据库表

第2步:创建一个SpringBoot工程,选择引入对应的起步依赖

第3步:配置文件application.properties中引入mybatis的配置信息,准备对应的实体类

第4步:准备对应的Mapper、Service(接口、实现类)、Controller基础结构

在这里插入图片描述

2 部门管理

开发的部门管理功能包含:

查询部门删除部门新增部门更新部门

2.1 查询部门

DeptController

<code>@Slf4j

@RestController

public class DeptController {

@Autowired

private DeptService deptService;

//@RequestMapping(value = "/depts" , method = RequestMethod.GET)

@GetMapping("/depts")

public Result list(){

log.info("查询所有部门数据");

List<Dept> deptList = deptService.list();

return Result.success(deptList);

}

}

DeptService(业务接口)

public interface DeptService {

/**

* 查询所有的部门数据

* @return 存储Dept对象的集合

*/

List<Dept> list();

}

DeptServiceImpl(业务实现类)

@Slf4j

@Service

public class DeptServiceImpl implements DeptService {

@Autowired

private DeptMapper deptMapper;

@Override

public List<Dept> list() {

List<Dept> deptList = deptMapper.list();

return deptList;

}

}

DeptMapper

@Mapper

public interface DeptMapper {

//查询所有部门数据

@Select("select id, name, create_time, update_time from dept")

List<Dept> list();

}

在这里插入图片描述

在这里插入图片描述

2.2 删除部门

<code>请求路径:/depts/{ id}

请求方式:DELETE

接口描述:该接口用于根据ID删除部门数据

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

@PathVariable

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

@DeleteMapping

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 添加部门

基本信息

请求路径:/depts

请求方式:POST

接口描述:该接口用于添加部门数据

DeptController

@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

public interface DeptService {

/**

* 新增部门

* @param dept 部门对象

*/

void add(Dept dept);

}

DeptServiceImpl

@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

@Mapper

public interface DeptMapper {

@Insert("insert into dept (name, create_time, update_time) values (#{name},#{createTime},#{updateTime})")

void inser(Dept dept);

}

2.4 更新部门

DeptController

@Slf4j

@RestController

public class DeptController {

@Autowired

private DeptService deptService;

@GetMapping("/{id}")

public Result puts(@PathVariable Integer id){

//调用service功能

Dept dept=deptService.updateById(id);

log.info("根据id{}更新部门{}",id,dept);

//响应

return Result.success(dept);

}

@PutMapping

public Result update(@RequestBody Dept dept){

log.info("修改部门");

deptService.update(dept);

//响应

return Result.success();

}

}

DeptService

public interface DeptService {

/**

* 4 更新部门

* @param id ,dept

*/

Dept updateById(Integer id);

void update(Dept dept);

}

DeptServiceImpl

@Slf4j

@Service

public class DeptServiceImpl implements DeptService {

@Autowired

private DeptMapper deptMapper;

@Override

public Dept updateById(Integer id) {

return deptMapper.updateById(id);

}

@Override

public void update(Dept dept) {

dept.setUpdateTime(LocalDateTime.now());

deptMapper.update(dept);

}

}

DeptMapper

@Mapper

public interface DeptMapper {

@Select("select * from dept where id= #{id}")

Dept updateById(Integer id);

@Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}")

void update(Dept dept);

}

使用postman 第一次是get请求,第二次是put请求

要与上述代码对应

在这里插入图片描述

get请求是查询部门的,如上图所示,不能把“后务部”修改成“后务处”的。

在这里插入图片描述

在这里插入图片描述

putting请求,如上图所示,把“后务部”修改成“后务处”,成功。

测试前后端, 也是成功修改部门信息

在这里插入图片描述

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。