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

tlias

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

1 需求分析和开发规范

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

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

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

  3. 思路分析

  4. 功能接口开发

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

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

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

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 {@Autowiredprivate 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 {@Autowiredprivate DeptMapper deptMapper;@Overridepublic 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 删除部门

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

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

@PathVariable

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

@DeleteMapping

DeptController

@Slf4j
@RestController
public class DeptController {@Autowiredprivate 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 {@Autowiredprivate DeptMapper deptMapper;@Overridepublic 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 {@Autowiredprivate 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 {@Autowiredprivate DeptMapper deptMapper;@Overridepublic 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 {@Autowiredprivate 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);}@PutMappingpublic 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 {@Autowiredprivate DeptMapper deptMapper;@Overridepublic Dept updateById(Integer id) {return deptMapper.updateById(id);}@Overridepublic 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请求
要与上述代码对应
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3专栏项目 -- 四、前后端结合(下)

一、async 和 await 1、使用async 和 await 改造异步请求 在接触后端API以后就遇到了越来越多的异步请求&#xff0c;现在我们就使用async 和 await 改造异步请求。 async function是把返回内容包裹成个Promise返回Promise await 它在async function里面才起作用&#xff0…

ini配置文件怎么存取False

1、ini文件介绍 INI文件&#xff08;全称为Initialization File&#xff0c;初始化文件&#xff09;是一种简单的文本文件格式&#xff0c;用于存储配置数据。它广泛应用于操作系统和各种应用程序中&#xff0c;用来保存设置、参数或初始化信息。INI文件的基本结构包括节&…

Office之Word应用(二)

一、页眉添加文件名称和页码 1、双击页眉&#xff0c;点击“页眉-空白&#xff08;三栏&#xff09;” 2、删掉第一处&#xff08;鼠标放在上面就会选中&#xff0c;Enter即可&#xff09;&#xff0c;第二处输入文档名称&#xff0c;第三处插入页码。 注&#xff1a;插入页码时…

Jmeter 性能-阶梯负载最终请求数

1、设置阶梯加压线程组请求参数 说明&#xff1a; 每隔2秒钟&#xff0c;会在1秒内启动5个线程 每次线程加载之后都会运行2s然后开始下一次线程加载 最终会加载50个线程并持续运行30s 50个线程持续运行30s后&#xff0c;会每隔2秒钟停止5个线程&#xff0c;剩余的线程继续负…

pytest教程-44-钩子函数-pytest_report_collectionfinish

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_report_header钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_report_collectionfinish钩子函数的使用方法。 pytest_report_collectionfinish 钩子函数在 pytest 完成所有测…

【windows】typora激活教程

申明 个人以为&#xff0c;Typora是最好用的markdown编辑软件&#xff0c;以下内容纯属个人实验&#xff0c;请购买正版license支持作者。 详细步骤 按照以下步骤找到Typora安装目录并修改这个以LicenseIndex开头命名的JavaScript 文件&#xff1a; 找到安装 Typora 的目录…

部署达梦数据库主从配置详细操作DM8

服务器配置 主库 192.168.81.128 实例名 dm-1 从库 192.168.81.129 实例名 dm-2 以下安装部署主从服务器都操作 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 注意安装前必须创建 dmdba 用户&#xff0c;禁止使用 root 用户安装数据库。…

前端面试:谈谈 JS 垃圾回收机制

垃圾回收 JavaScript 中的内存管理是自动执行的&#xff0c;而且是不可见的。我们创建基本类型、对象、函数……所有这些都需要内存。 当不再需要某样东西时会发生什么? JavaScript 引擎是如何发现并清理它? 可达性 JavaScript 中内存管理的主要概念是可达性。 简单地说…

宝塔Linux面板5.9版本升级新版失败解决方法

下载地址&#xff1a;宝塔Linux面板5.9升级教程 宝塔5.9版本升级最新版宝塔失败&#xff0c;可以参考这份详细教程&#xff08;不断更新中&#xff09; 安装要求&#xff1a; Python版本&#xff1a; 2.6/2.7&#xff08;安装宝塔时会自动安装&#xff09; 内存&#xff1a;1…

NX二次开发——测量距离(两个对象之间最近、最远距离)

一、概述 最近看到 一些文章比较有趣&#xff0c;所以做个记录&#xff0c;顺便写一下博客&#xff0c;附上全部代码&#xff0c;方便刚从事NX二次开发同僚的理解。本次主要模拟NX自带的测量工具中对两个实体对象进行测量距离。NX系统功能如下所示&#xff1a; 二、代码解析 主…

一图看懂git merge和git rebase的区别!!

一图看懂git merge和git rebase的区别&#xff01;&#xff01; Git 是一个非常流行的版本控制系统&#xff0c;它帮助开发者管理代码的不同版本。在 Git 中&#xff0c;merge 和 rebase 是两种常用的将不同分支的更改合并到一起的方法&#xff0c;但它们在处理方式和结果上有…

CP模型--Raft协议介绍

文章目录 前言一、Raft 是什么&#xff1a;二、Raft的工作原理&#xff1a;2.1 Raft 节点的3中状态&#xff1a;2.2 集群启动 leader 节点的选举&#xff1a;在这里插入图片描述2.3 数据的同步&#xff08;日志复制&#xff09;&#xff1a;2.4 leader 重新选举&#xff1a;2.5…

目前公认的一些好用AI工具

ChatGPT&#xff1a;这是一个广泛推荐和使用的AI聊天机器人&#xff0c;能够进行高效的文本生成和对话管理。它在多个证据中被提及&#xff0c;显示其普遍性和实用性。 Midjourney&#xff1a;这是一款强大的AI绘画工具&#xff0c;特别适合创意写作和图像生成。它在多个来源中…

Web 安全漏洞之文件上传

目录 文件上传漏洞及危害 文件名 HTML 和 SVG 软链 服务器磁盘 防御方法 网络安全学习路线 &#xff08;2024最新整理&#xff09; 学习资料的推荐 1.视频教程 2.SRC技术文档&PDF书籍 3.大厂面试题 特别声明&#xff1a; 文件上传漏洞及危害 文件上传漏洞…

基于Idea搭建Android开发环境

文章目录 下载SDK ManagerAndroid SDK Platform-toolsAndroid SDK Build-toolsAndroid SDKAndroid SDK Extras IDEA设置创建TestApp导入Android Studio创建的项目 下载SDK Manager SDK Manager是Google提供的&#xff0c;专门用于下载/管理&#xff0c;安卓开发中需要用到的工…

CANopen总线_CANOpen开源协议栈

CANopen是自动化中使用的嵌入式系统的通信协议栈和设备配置文件规范。就OSI 模型而言&#xff0c;CANopen 实现了以上各层&#xff0c;包括网络层。 CANopen 标准由一个寻址方案、几个小型通信协议和一个由设备配置文件定义的应用层组成。通信协议支持网络管理、设备监控和节点…

java 解决跨域时遇到问题,怎么来做一个跨域环境

今天遇到一个问题&#xff1a; 关于#java#的问题&#xff1a;java 解决跨域时遇到问题&#xff1a;为什么跨域访问时配置的CorsFilter没有进入&#xff1f;直接访问请求地址时进入了配置的CorsFilter 由于没有实际的跨域环境&#xff0c;因此打算在本机建一个跨域环境&#xff…

庙算兵棋推演AI开发初探(4-调用AI模型)

前面讲了如何开展编写规则脚本型Agent&#xff08;智能体&#xff09;的方法&#xff0c;现在探究一下如何调用知识型&#xff08;一般而言的训练出的模型&#xff09;智能体的方法。 这次调用的是庙算平台的demo&#xff08;网址见图&#xff09; 下载了“知识强化学习型”…

【异常处理】(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 求一元二次方程式ax^2bxc0的实根&#xff0c;如果方程没有实根&#xff0c;则输入有关警告信息。要求&#xff1a;建立一元二次方程类&#xff0c;利用异常技术处理。 源码 #include <iostream> #include <cmath>using namespa…

力扣HOT100 - 763. 划分字母区间

解题思路&#xff1a; class Solution {public List<Integer> partitionLabels(String s) {int[] last new int[26];int len s.length();for (int i 0; i < len; i) {last[s.charAt(i) - a] i;//记录字母最远的下标}List<Integer> partition new ArrayList…