0


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

tlias

1 需求分析和开发规范

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

  1. 查看页面原型明确需求- 根据页面原型和需求,进行表结构设计、编写接口文档(已提供)
  2. 阅读接口文档
  3. 思路分析
  4. 功能接口开发- 就是开发后台的业务功能,一个业务功能,我们称为一个接口
  5. 功能接口测试- 功能开发完毕后,先通过Postman进行功能接口测试,测试通过后,再和前端进行联调测试
  6. 前后端联调测试- 和前端开发人员开发好的前端工程一起测试

1 开发规范-Restful

  1. http://localhost:8080/users/1 GET:查询id为1的用户
  2. http://localhost:8080/users POST:新增用户
  3. http://localhost:8080/users PUT:修改用户
  4. http://localhost:8080/users/1 DELETE:删除id为1的用户

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

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

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

  1. packagecom.itheima.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublicclassResult{privateInteger code;//响应码,1 代表成功; 0 代表失败privateString msg;//响应信息 描述字符串privateObject data;//返回的数据//增删改 成功响应publicstaticResultsuccess(){returnnewResult(1,"success",null);}//查询 成功响应publicstaticResultsuccess(Object data){returnnewResult(1,"success",data);}//失败响应publicstaticResulterror(String msg){returnnewResult(0,msg,null);}}

创建项目工程目录结构:

  1. controller:控制层。存放控制器Controller
  2. mapper:持久层/数据访问层。存放mybatisMapper接口
  3. pojo:存放实体类
  4. service:业务层。存放业务代码

第1步:准备数据库表
第2步:创建一个SpringBoot工程,选择引入对应的起步依赖
第3步:配置文件application.properties中引入mybatis的配置信息,准备对应的实体类
第4步:准备对应的Mapper、Service(接口、实现类)、Controller基础结构

在这里插入图片描述

2 部门管理

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

  1. 查询部门
  2. 删除部门
  3. 新增部门
  4. 更新部门

2.1 查询部门

DeptController

  1. @Slf4j@RestControllerpublicclassDeptController{@AutowiredprivateDeptService deptService;//@RequestMapping(value = "/depts" , method = RequestMethod.GET)@GetMapping("/depts")publicResultlist(){
  2. log.info("查询所有部门数据");List<Dept> deptList = deptService.list();returnResult.success(deptList);}}

DeptService(业务接口)

  1. publicinterfaceDeptService{/**
  2. * 查询所有的部门数据
  3. * @return 存储Dept对象的集合
  4. */List<Dept>list();}

DeptServiceImpl(业务实现类)

  1. @Slf4j@ServicepublicclassDeptServiceImplimplementsDeptService{@AutowiredprivateDeptMapper deptMapper;@OverridepublicList<Dept>list(){List<Dept> deptList = deptMapper.list();return deptList;}}

DeptMapper

  1. @MapperpublicinterfaceDeptMapper{//查询所有部门数据@Select("select id, name, create_time, update_time from dept")List<Dept>list();}

在这里插入图片描述

在这里插入图片描述

2.2 删除部门

  1. 请求路径:/depts/{id}
  2. 请求方式:DELETE
  3. 接口描述:该接口用于根据ID删除部门数据

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

  1. @PathVariable

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

  1. @DeleteMapping

DeptController

  1. @Slf4j@RestControllerpublicclassDeptController{@AutowiredprivateDeptService deptService;@DeleteMapping("/depts/{id}")publicResultdelete(@PathVariableInteger id){//日志记录
  2. log.info("根据id删除部门");//调用service层功能
  3. deptService.delete(id);//响应returnResult.success();}//省略...}

DeptService

  1. publicinterfaceDeptService{/**
  2. * 根据id删除部门
  3. * @param id 部门id
  4. */voiddelete(Integer id);}

DeptServiceImpl

  1. @Slf4j@ServicepublicclassDeptServiceImplimplementsDeptService{@AutowiredprivateDeptMapper deptMapper;@Overridepublicvoiddelete(Integer id){//调用持久层删除功能
  2. deptMapper.deleteById(id);}}

DeptMapper

  1. @MapperpublicinterfaceDeptMapper{/**
  2. * 根据id删除部门信息
  3. * @param id 部门id
  4. */@Delete("delete from dept where id = #{id}")voiddeleteById(Integer id);}

2.3 添加部门

  • 基本信息请求路径:/depts请求方式:POST接口描述:该接口用于添加部门数据

DeptController

  1. @Slf4j@RestControllerpublicclassDeptController{@AutowiredprivateDeptService deptService;@PostMapping("/depts")publicResultadd(@RequestBodyDept dept){//记录日志
  2. log.info("新增部门:{}",dept);//调用service层添加功能
  3. deptService.add(dept);//响应returnResult.success();}}

DeptService

  1. publicinterfaceDeptService{/**
  2. * 新增部门
  3. * @param dept 部门对象
  4. */voidadd(Dept dept);}

DeptServiceImpl

  1. @Slf4j@ServicepublicclassDeptServiceImplimplementsDeptService{@AutowiredprivateDeptMapper deptMapper;@Overridepublicvoidadd(Dept dept){//补全部门数据
  2. dept.setCreateTime(LocalDateTime.now());
  3. dept.setUpdateTime(LocalDateTime.now());//调用持久层增加功能
  4. deptMapper.inser(dept);}}

DeptMapper

  1. @MapperpublicinterfaceDeptMapper{@Insert("insert into dept (name, create_time, update_time) values (#{name},#{createTime},#{updateTime})")voidinser(Dept dept);}

2.4 更新部门

DeptController

  1. @Slf4j@RestControllerpublicclassDeptController{@AutowiredprivateDeptService deptService;@GetMapping("/{id}")publicResultputs(@PathVariableInteger id){//调用service功能Dept dept=deptService.updateById(id);
  2. log.info("根据id{}更新部门{}",id,dept);//响应returnResult.success(dept);}@PutMappingpublicResultupdate(@RequestBodyDept dept){
  3. log.info("修改部门");
  4. deptService.update(dept);//响应returnResult.success();}}

DeptService

  1. publicinterfaceDeptService{/**
  2. * 4 更新部门
  3. * @param id ,dept
  4. */DeptupdateById(Integer id);voidupdate(Dept dept);}

DeptServiceImpl

  1. @Slf4j@ServicepublicclassDeptServiceImplimplementsDeptService{@AutowiredprivateDeptMapper deptMapper;@OverridepublicDeptupdateById(Integer id){return deptMapper.updateById(id);}@Overridepublicvoidupdate(Dept dept){
  2. dept.setUpdateTime(LocalDateTime.now());
  3. deptMapper.update(dept);}}

DeptMapper

  1. @MapperpublicinterfaceDeptMapper{@Select("select * from dept where id= #{id}")DeptupdateById(Integer id);@Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}")voidupdate(Dept dept);}

使用

  1. postman

第一次是

  1. get

请求,第二次是

  1. put

请求
要与上述代码对应
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
putting请求,如上图所示,把“后务部”修改成“后务处”,成功。

测试前后端, 也是成功修改部门信息
在这里插入图片描述

在这里插入图片描述

标签: JavaWeb mybatis tomcat

本文转载自: https://blog.csdn.net/m0_73678713/article/details/138801079
版权归原作者 卷末 所有, 如有侵权,请联系我们删除。

“JavaWeb--15 tlias-web-management 黑马程序员 部门管理(修改部门信息)”的评论:

还没有评论