web入门案例-部门篇

news2024/9/23 15:26:08

开发流程
在这里插入图片描述

在这里插入图片描述
完成对应部门管理和员工管理的需求

准备工作

在这里插入图片描述
注意:service还要写接口+实体类,mapper只写接口即可,controller是实体类
对应的三个注解
@RestController(方法返回值作为响应值)
@Mapper(控制反转IOC,这个是建对应实现接口的类)
@Service(控制反转IOC)
在这里插入图片描述

开发规范

在这里插入图片描述

对应的接口文档
先学会这周末阅读接口文档
这就是接口文档中部门管理的第一个功能
在这里插入图片描述
在这里插入图片描述

Restful风格

前后端之间的请求基于Restful
Restful规定前后端之间的url以及对应请求方式对应的意义
url对应定位访问什么
请求方法对应具体操作
同样user post请求接收新增 put则是更改操作
在这里插入图片描述
在这里插入图片描述
注意:常用+s的

统一响应结果

在这里插入图片描述

web一些小规范

先看需求和页面原型
在这里插入图片描述
再到接口文档(规定对应请求路径,请求参数,请求方式和响应数据)和思路分析

在这里插入图片描述

日志对象

在这里插入图片描述

@Slf4j//这个注解就是替代我们的日志对象创建语句
@RestController
public class DeptController {
//    private static Logger log=LoggerFactory.getLogger(DeptController.class);//日志记录对象(固定代码)
    //想要在哪个类,就是getLogger(对应的类.class),so我们在对应类上用lombok的@SLf4j,会自动创建对应的log
    @Autowired
    private DeptServiceImpl deptService;
    @RequestMapping("/depts") //查询全部部门数据
    public Result list(){
    log.info("查询全部部门数据");

    return Result.success();
    }
}

log就是对应的日志对象
log.info可以在控制台输出你想输出的内容
可以原始的创建
不过推荐直接@Slf4j
会自动创建本类得到日志对象,名为log

指定请求方式和路径(用注解)

在这里插入图片描述

正常你如果只写
@RequestMapping("/depts")
方法
这样只能指定请求路径
不管什么请求方法都能进来
@RequestMapping(value = "/depts",method = RequestMethod.GET)
方法
这样的话指定了路径和请求方式,不过稍微有点麻烦
所以spring出来
@GetMappering("/depts")
@PostMappering("/depts")
还有很多请求方式如下图

在这里插入图片描述

查询全部部门

Deptcontroller

@Slf4j//这个注解就是替代我们的日志对象创建语句
@RestController
public class DeptController {
//    private static Logger log=LoggerFactory.getLogger(DeptController.class);//日志记录对象(固定代码)
    //想要在哪个类,就是getLogger(对应的类.class),so我们在对应类上用lombok的@SLf4j,会自动创建对应的log
    @Autowired
    private DeptService deptService;

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

    @GetMapping("/depts")
    @PostMapping("/depts")
    public Result list(){
    log.info("查询全部部门数据");
    //调用service查询数据
    List<Dept> deptList=deptService.list();

    return Result.success(deptList);
    }
}

在这里插入图片描述

DeptService以及DeptServiceImpl

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

DeptMapper

在这里插入图片描述
简单的我直接用注解了,为什么dept爆红
就是idea的识别问题
只要你配置文件写对了就行
你也可以数据库进行连接就不爆红了
如图
在这里插入图片描述

postman结果

在这里插入图片描述

可以看到正确输出了
其实最后一步有个前后端联调,那个简单就不说了

几个注意

1.controller需要调用对应service的方法,来获取参数
2.我们这controllerDI(注入)的是service的接口类型

@Autowired
    private DeptService deptService;

而具体的方法实现在对应具体service类,而且对应的deptMapper也要对应方法
在这里插入图片描述
然后,这个具体类里面注入我们的Mapper接口
3.Mapper这种简单语句直接写注解即可,不用xml文件那么麻烦

删除部门

在这里插入图片描述
就这个需求
根据id删除部门
再看接口文档
delete请求方式 然后
在这里插入图片描述

路径参数

@PathVariable注解,用于这种路径参数,在对应参数进行标注

正常参数是get是那种?参数名=…&参数名=…
然后post是写在请求体中
在这里插入图片描述

controller+service+mapper

controller
在这里插入图片描述
service接口
在这里插入图片描述
service实体类
在这里插入图片描述

mapper
在这里插入图片描述

postman以及数据库结果

在这里插入图片描述
删除对应id为5的数据库了
在这里插入图片描述

新增部门

只写一个部门名称参数2-10位(service里判断)
在这里插入图片描述
在这里插入图片描述
注意我们传的参数是json
所以我们在要用对应的对象接收
还要写一个@RequestBody,来进行json和对应pojo的属性匹配

controller+service+mapper

controller
在这里插入图片描述
service接口
在这里插入图片描述
service实体类
在这里插入图片描述
mapper
在这里插入图片描述
postman
在这里插入图片描述
结果
在这里插入图片描述

注意

你mapper里面是实体参数
你可以直接用里面的属性
比如传参dept
sql语句可以直接#{id}这种(id是dept里面的属性)

注意传参是json格式的
json格式controller要用bean对象参数接收的话
需要加一个注解@RequestBody!!!

controller优化简化网页开发(@RestMappering)

在这里插入图片描述

三个注解对应的开头申请多少/depts
可以简化
用@RestMapping(“/depts”)来直接写到类上
这样的话是这样的路径不用写了,如果后面还有别的参数就@…Mapping(“/{id}”)

完整请求路径:类上的RequestMapping的value属性+方法上的RequestMapping的value属性

员工管理

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

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

相关文章

漏洞深度分析 | CVE-2023-36053-Django 表达式拒绝服务

​ 项目介绍 Django 是一个高级 Python Web 框架&#xff0c;鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建&#xff0c;解决了 Web 开发的大部分麻烦&#xff0c;因此您可以专注于编写应用程序&#xff0c;而无需重新发明轮子。它是免费且开源的。 项目地址…

CodeTop整理-树篇

目录 103. 二叉树的锯齿形层次遍历 236. 二叉树的最近公共祖先 124. 二叉树中的最大路径和 102. 二叉树的层序遍历 94. 二叉树的中序遍历 110. 平衡二叉树 572. 另一个树的子树 96. 不同的二叉搜索树 543. 二叉树的直径 297. 二叉树的序列化与反序列化 199. 二叉树的…

eNSP-VRRP虚拟路由器冗余技术

VRRP-虚拟路由器冗余技术 文章目录 VRRP-虚拟路由器冗余技术一、拓扑结构二、基本配置三、测试验证四、知识点详解1.VRRP路由器2.报文格式3.工作过程 一、拓扑结构 二、基本配置 R1: #配置ip <Huawei>sys [Huawei]sys r1 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip a…

快速排序算法!

快速排序 什么是快速排序&#xff08;quickSort&#xff09;&#xff1f; 主要分成两部分实现&#xff0c;分区、递归操作。 分区 从数组中任意选择一个 “基准”&#xff0c;所有比基准小的元素放在基准前面&#xff0c;比基准大的元素放在基本后面。 递归 递归地对基准…

Todo-List案例版本四

全局事件总线 使用步骤 1.定义全局事件总线 new Vue({...beforeCreated(){Vue.prototype.$busthis //安装全局事件总线&#xff0c;$bus就是当前应用的vm}... }) 2.使用事件总线 a.接收数据&#xff1a;A组件想接收数据&#xff0c;则在A组件中给$bus绑定自定义事件&…

Outlook---撤回(或替换)已发出的邮件

0 Preface/Foreword 发送邮件时&#xff0c;发现邮件发错了&#xff0c;或者忘了添加附件&#xff0c;那么就需要用到撤回或者替换功能。 1 撤回/替换邮件方法 步骤如下&#xff1a; 第一步&#xff1a;双击打开邮件&#xff1b; 第二步&#xff1a;找到撤回按键

自锁电路分析与应用

原理图分享 今天工作中遇到一个设计很妙的电路&#xff0c;请教了一下硬件的工程师。 大家自己直接看图可以分享出这个电路的作用吗&#xff0c;可以在评论区告诉我哦&#xff01; 自锁电路 如上图就是一个自锁电路&#xff0c;和下面的电路一样&#xff1a; 电路现象描述&a…

23.RTC实时时钟

1.STM32 RTC介绍&#xff1a; &#xff08;1&#xff09;RTC简介&#xff1a; STM32的实时时钟(RTC)是一个独立的定时器。STM32的RTC模块拥有一组连续计数的计数器&#xff0c;在相应软件配置下&#xff0c;可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和…

虚幻5-could not find root physics body 布料系统问题解决方法

不做不知道自己身体好&#xff0c;又碰到问题了&#xff1a; could not find root physics body 1.据说是Skeleton 和SkeletaMesh傻傻分不清楚 &#xff08;但就是排查后&#xff0c;就不是这个问题&#xff09; 2.重新创造一个Physic Asset吧 Creating a New Physics Asse…

【C语言初阶(13)】三子棋游戏(优化:多子棋实现)

文章目录 一、游戏的实现思路二、游戏的实现步骤1. 菜单函数2. 设置棋盘3. 初始化棋盘4. 打印棋盘5. 玩家下棋6. 电脑下棋7. 多子棋判断输赢8. 判断棋盘是否已满 三、模块化代码实现1. test.c2. game.h3. game.c 四、结果演示 由于模块化编程的需要&#xff0c;我们需要把整个游…

解决Bridge材质导入到Blender为白色的问题

文章目录 前言一、复现问题二、解决方案总结 前言 一、复现问题 在Bridge上看到一块不错的草皮, 导入成功后是白色材质: 二、解决方案 以前用这个方法导入过模型, 那时候还没启用汉化, 也没什么材质问题. 这次操作之前刚启用了汉化, 我猜是汉化导致: 取消勾选’新建数据’, 重…

【Java】-初识java

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 文章目录 前言…

Linux 基础之 TOP 命令详解

文章目录 一、前言二、Top说明 一、前言 TOP 命令是 Linux 常用的性能分析工具&#xff0c;能够实时显示系统中各个进程资源占用状况&#xff0c;类似于 Windows 的任务管理器。 二、Top说明 当使用一个工具时&#xff0c;对此最快的了解方式就是查看说明&#xff0c;那就是…

6.任务调度:保存和还原现场,时间片轮转

实现任务调度&#xff0c;模拟时间片 1.任务调度 在进行上下文切换时&#xff0c;需要保存和切换以下内容&#xff1a; 寄存器&#xff1a;包括通用寄存器&#xff08;如 EAX、EBX、ECX等&#xff09;和特殊寄存器&#xff08;如程序计数器 PC、堆栈指针 SP、基址指针 BP等&a…

LeetCode | C++ 动态规划——完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ

目录 完全背包518. 零钱兑换 II377. 组合总和 Ⅳ参考 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包…

【数据挖掘】时间序列教程【九】

第5章 状态空间模型和卡尔曼滤波 状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了我们需要知道的一切,以便对当时的状态进行推…

12-ATF架构下的启动流程

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:Secureboot从入门到精通-[目录] 👈👈👈目录 1、Boot模型2、Boot示例3、Runtime模型4、异常跳转模型5、启动跳转模型

四川佳洲智谷:在AI潮水里加速快跑!

2023年6月28日夏季新品发布会上&#xff0c;摩卡掌舵人李国兴发布了国内首个AI原生HRSaaS整体解决方案——摩卡Eva。该产品的发布&#xff0c;标志着Moka正式成为业内第一家真正交付AI原生HRSaaS产品的公司。 随着AIGC浪潮的到来&#xff0c;越来越多的企业开始意识到人工智能的…

对抗性人工智能如何威胁您的机器学习模型

人工智能&#xff08;AI&#xff09;的出现给社会的几乎每个领域带来了革命性的变化。然而&#xff0c;人工智能的前景光明的能力也伴随着重大挑战&#xff0c;特别是在网络安全方面。 保护机器学习工作流程对于保护这些组织免受新兴威胁至关重要&#xff0c;而对抗性人工智能…

DeRPnStiNK靶机复盘

DeRPnStiNK靶机复盘 拿到靶机后我们第一步先扫描靶机地址。 nmap -sP 192.168.197.0/24扫描出我们的靶机地址。 扫描出来后我们再单独对这个ip进行扫描&#xff0c;发现开了三个端口 然后扫描一下目录&#xff0c;发现一个wordpress登陆网址和一个phpmyadmin登陆地址。 我们…