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

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

码农世界 2024-06-04 前端 111 次浏览 0个评论

tlias

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

      1 需求分析和开发规范

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

      1. 查看页面原型明确需求

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

        • 思路分析

        • 功能接口开发

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

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

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

      1 开发规范-Restful

      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 部门管理

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

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

        2.1 查询部门

        DeptController

        @Slf4j
        @RestController
        public class DeptController {
            @Autowired
            private DeptService deptService;
            //@RequestMapping(value = "/depts" , method = RequestMethod.GET)
            @GetMapping("/depts")
            public Result list(){
                log.info("查询所有部门数据");
                List deptList = deptService.list();
                return Result.success(deptList);
            }
        }
        

        DeptService(业务接口)

        public interface DeptService {
            /**
             * 查询所有的部门数据
             * @return   存储Dept对象的集合
             */
            List list();
        }
        

        DeptServiceImpl(业务实现类)

        @Slf4j
        @Service
        public class DeptServiceImpl implements DeptService {
            @Autowired
            private DeptMapper deptMapper;
            
            @Override
            public List list() {
                List deptList = deptMapper.list();
                return deptList;
            }
        }    
        

        DeptMapper

        @Mapper
        public interface DeptMapper {
            //查询所有部门数据
            @Select("select id, name, create_time, update_time from dept")
            List list();
        }
        

        2.2 删除部门

        请求路径:/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请求

          要与上述代码对应

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

转载请注明来自码农世界,本文标题:《JavaWeb--15 tlias-web-management 黑马程序员 部门管理(修改部门信息)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,111人围观)参与讨论

还没有评论,来说两句吧...

Top