SpringBoot(三层框架Controller,Mapper,Service)中遇到的一些注解整理

本文主要从Controller层,Service层,Mapper层这三层架构中记录用到的各种注解
还有一些MyBatis用到的注解
持续更新到本人的毕设做完为止,太多了太多了根本学不完哈哈哈

1.Controller层

1.1@GetMapping/@PostMapping/@DeleteMapping/@PutMapping

用于建立HTTP请求与处理方法之间的映射关系,其中XXXMapping限定了提交http请求的方法

1.2@PathVariable

用于获取URL中提交过来的参数。例如,假设有一个请求URL为/users/{userId}/orders/{orderId},其中{userId}和{orderId}是动态参数。在控制器方法中,可以使用@PathVariable注解将这些参数的值提取出来

@RequestMapping("/users/{userId}/orders/{orderId}")  
public String getOrder(@PathVariable("userId") Long userId, @PathVariable("orderId") Long orderId) {  // ... 处理逻辑  
}

1.3@RequestBody

使用此注解,可以把前端发送的JSON格式的数据,绑定到一个Java的对象中。

@PostMapping("/users")  
public String createUser(@RequestBody User user) {  // 使用user对象进行相应的业务逻辑处理  // ...  return "User created successfully";  
}  public class User {  private String name;  private int age;  // 省略getter和setter方法  
}

@DateTimeFormat

和RequestBody机制类似:前端传递了一个格式为"yyyy-MM-dd HH:mm:ss"的日期字符串,我们可以在对应的Java实体类属性上加上@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”),这样Spring就会自动将这个字符串转换为Date类型,并赋值给该属性。

    public Result page(@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer pageSize,String name, String gender,@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,)

1.4@RequestMapping

作用是:抽取公共路径,让响应的方法都加上一段公共的父亲路径

@Controller  
@RequestMapping("/users")  
public class UserController {  @GetMapping("/{userId}")  public String getUser(@PathVariable("userId") Long userId, Model model) {  // 根据userId获取用户信息,并添加到Model中  // ...  return "userDetails"; // 返回视图名称  }  @PostMapping("/create")  public String createUser(@RequestBody User user) {  // 处理创建用户的逻辑  // ...  return "redirect:/users"; // 重定向到用户列表页面  }  
}

2.Service层

这一层主要实现接受Controller传来的DTO对象,转化为Entity类,调用Mapper层,实现数据可持久化。

1.@AutoWired

1.1作用

1.@Autowired注解起到了依赖注入(Dependency Injection)的作用。它可以对类成员变量、方法及构造函数进行标注,以完成自动装配的工作。

1.2注意点

1.不能在函数内部声明一个变量,然后去使用它,否则报错,只适合全局变量。
正确用法,在类中声明,而不是在函数中声明
在这里插入图片描述

3.Mapper层

也叫DAO层,主要实现和数据库的交互。有两种开发方法,一种是直接用注解写简单的SQL语句,另外一种是先写XML配置文件(写SQL),然后在只在Mapper类中定义方法

2.1@Select/@Delete/@Update/@

    @Select("Select id, name, create_time, update_time from dept")List<Dept> list();

3.MyBatis下的XML标签

3.1基本配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<mapper namespace ="com.itheima.mapper.EmpMapper"></mapper>

其中 mapper的namespace属性来自于你要映射的那个Mapper层接口地址

4.其他

本质上是工具类和日志,不知道咋归类的东西

4.1@Sl4j

会给你自动生成一个对象log,给你提供当前类的日志信息
在这里插入图片描述

4.2AOP

面向切面编程,通俗地说就是把你的代码implement到一个动态代理对象上,然后强行给你要跑的代码的头部/尾部加上一些通用的代码段。这样就向一刀切向了许许多多的代码块,所以叫面向切面编程

@Target()

指定注解能被运用到什么地方
@Target是一个元注解,它用来描述其他注解可以被应用的地方。换句话说,它指定了自定义注解可以在哪些Java元素上使用。@Target注解的取值是一个ElementType枚举类型的数组,这些值包括:

TYPE:用于描述类、接口(包括注解类型)或enum声明
FIELD:用于描述字段,包括枚举的常量
METHOD:用于描述方法
PARAMETER:用于描述方法参数
CONSTRUCTOR:用于描述构造器
LOCAL_VARIABLE:用于描述局部变量
ANNOTATION_TYPE:用于描述注解类型
PACKAGE:用于描述包

@Rentention()

@Retention(RetentionPolicy.RUNTIME) 是 Java 提供的一个元注解,用于指定其他注解的生存周期。具体来说,它定义了注解在什么级别是有效的。Retention 是“保留”的意思,而 RetentionPolicy 是“保留策略”的枚举类型。

RetentionPolicy 有三个枚举值:

SOURCE:注解只在源码中存在,在编译时会被丢弃。这些注解不会写入字节码文件,因此 JVM 在运行时无法获取这些注解信息。这种策略通常用于编译时检查,如 @Override。

CLASS:注解在类文件中可用,但会被 JVM 丢弃。这意味着注解信息会保留在字节码文件中,以便在运行时通过反射获取,但是一旦类被加载到 JVM,注解信息就不会再被保留了。这是默认策略。

RUNTIME:注解在运行时也保留,因此可以通过 JVM 或其他使用反射机制的代码来读取注解的信息。这种策略通常用于需要在运行时动态读取注解信息的场景,如 Spring 框架中的很多注解。
上边两个组合起来,用来构成自定义的一个注解
在这里插入图片描述

@Aspect

用于标识这个类是一个切面类

@PointCut

@Pointcut(“execution(* com.sky.mapper..(…)) && @annotation(com.sky.annotation.AutoFill)”)
用于指明切入点,表示你要对哪些方法进行切入

@Before /@After /@Around

指明通知类型,主要就是告诉你切入的通知运行时机,是在切入点运行前/后还是前后都有

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

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

相关文章

Go 爬虫之 colly 从入门到不放弃指南

文章目录 概要介绍如何学习官方文档如何安装快速开始如何配置调试分布式代理层面执行层面存储层面存储多收集器配置优化持久化存储启用异步加快任务执行禁止或限制 KeepAlive 连接扩展总结如果想用 GO 实现爬虫能力,该如何做呢?抽时间研究了 Go 的一款爬虫框架 colly。 概要…

Matrix工具抓取ANR

接着上一篇文章ANR的处理分析&#xff0c;这里来整理一下Matrix工具的使用。有不对的地方&#xff0c;请大家指出来 1.Matrix 简介&#xff1a; Matrix 是一款微信研发并日常使用的应用性能接入框架&#xff0c;支持iOS, macOS和Android。 Matrix 通过接入各种性能监控方案&a…

Qt文件和目录相关操作

1.相关说明 QCoreApplication类、QFile类、QDir、QTemporaryDir类、QTemporaryFile类、QFileSystemWatcher类的相关函数 2.相关界面 3.相关代码 #include "dialog.h" #include "ui_dialog.h" #include <QFileDialog> #include <QTemporaryDir>…

Ardupilot开源飞控之VTOL之旅:打印件清单

Ardupilot开源飞控之VTOL之旅&#xff1a;打印件清单 1. 源由2. 清单2.1 模拟VTX打印件2.2 摄像头打印件2.3 GPS & RC天线打印件2.4 飞控 & 电调打印件 3. 总结4. 参考资料 1. 源由 VTOL一直仍在角落吃灰&#xff0c;主要还是手头缺点经费&#xff0c;搞台3D打印机基本…

理解“面向对象编程”概念

面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种软件开发范式&#xff0c;它以“对象”为核心&#xff0c;将程序视为一系列相互协作的对象集合。 具体来说&#xff0c;面向对象编程是一种程序设计和开发的范式&#xff0c;其核心理念是…

Kotlin 移动端多平台

支持多平台编程是 Kotlin 的主要优势之一。它减少了为不同平台编写和维护相同代码所花费的时间&#xff0c;同时保留了本机编程的灵活性和优势。 1. 基本概念 KMM&#xff1a;Kotlin Multiplatform for mobile&#xff08;移动设备的 Kotlin 多平台&#xff09; KMM 多平台的主…

16k+ start 一个开源的的监控系统部署教程

安装条件 Linux或macOS系统 4GB内存 开放 33014、33174、3183端口 1.安装 1、下载源码 首先使用 git 克隆源码到本地 git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/ 方式1&#xff1a;运行 install.sh 脚本一键安装 ./install.s…

Webpack5入门到原理13:开发服务器自动化

每次写完代码都需要手动输入指令才能编译代码&#xff0c;太麻烦了&#xff0c;我们希望一切自动化 1. 下载包 npm i webpack-dev-server -D 2. 配置 webpack.config.js const path require("path"); const ESLintWebpackPlugin require("eslint-webpack…

luffy商城项目(一)

企业项目类型 # 1 面向互联网用户&#xff1a;商城类项目 -微信小程序商城 # 2 面向互联网用户&#xff1a;二手交易类的 -咸鱼 -转转 # 3 公司内部项目&#xff1a;python写的重点 -oa系统 -打卡系统工资核算系统 -第三方公司做的&#xff1a…

深度剖析 Spring 框架在 Java 应用开发中的优势与应用

Spring 是用于企业 Java 应用程序开发的最流行的应用程序开发框架。全球数百万开发人员使用 Spring Framework 创建高性能、易于测试和可重用的代码。Spring Framework 是一个开源的 Java 平台。它最初由 Rod Johnson 编写&#xff0c;并于 2003 年 6 月在 Apache 2.0 许可下首…

监督学习 - 梯度提升机(Gradient Boosting Machines,GBM)

什么是机器学习 梯度提升机&#xff08;Gradient Boosting Machines&#xff0c;GBM&#xff09;是一种集成学习方法&#xff0c;通过将多个弱学习器&#xff08;通常是决策树&#xff09;组合成一个强学习器来提高模型的性能。GBM的训练过程是通过迭代&#xff0c;每一步都根…

leetCode-42.接雨水

&#x1f4d1;前言 本文主要是【算法】——算法模拟的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff…

git提权

实验环境——vulnhub-dc2靶场 git提权 前提&#xff1a;用户可以使用sudo中git权限 查看sudo权限 sudo -l可以发现git命令存在sudo提权 基于此进行权限提升 方式&#xff1a; sudo git help config #在末行命令模式输入 !/bin/bash 或 !sh #完成提权 sudo git -p help…

直接发文!1D-2D-MTF-CNN-GRU-AT多通道图像时序融合的分类/故障识别程序!Excel导入,直接运行

​适用平台&#xff1a;Matlab2023版本及以上 本程序同时结合两篇国内顶级EI的方法&#xff1a;提出1D-2D-MTF-CNN-GRU-AT多通道图像时序融合的分类/故障识别程序&#xff01; ①中文EI期刊《电力自动化设备》12月29号网络首发文献&#xff1a;《基于格拉姆角场与并行CNN的并…

【PyTorch】PyTorch之Reduction Ops

文章目录 前言一、ARGMAX二、ARGMIN三、AMAX和AMIN四、ALL和ANY五、MAX和MIN六、MEAN七、MEDIAN八、NORM九、PROD十、STD十一、SUM十二、UNIQUE十三、VAR 前言 介绍pytorch的Reduction Ops。 一、ARGMAX torch.argmax(input, dim, keepdimFalse) → LongTensor Parameters&a…

HTTP与HTTPS:网络通信的安全卫士

目录 引言 1. HTTP&#xff08;Hypertext Transfer Protocol&#xff09; 1.1HTTP的基本概念 1.2 HTTP的工作原理 1.3 HTTP请求与响应 1.4HTTP特点 1.4.1 无状态性 1.4.2 明文传输 1.4.3 简单快速 1.5 HTTP的安全性 2. HTTPS&#xff08;Hypertext Transfer Protoco…

UML相关问题及答案(2024)

1、什么是 UML&#xff0c;并且它通常用于什么目的&#xff1f; UML&#xff08;统一建模语言&#xff0c;Unified Modeling Language&#xff09;是一种标准的建模语言&#xff0c;它被广泛地用于软件和系统工程、业务建模以及其他非软件系统的可视化文档。UML 不是一种编程语…

突破Android开发瓶颈:6年Android开发者的实用建议

作为一名在Android领域摸爬滚打6年的老手&#xff0c;我想给那些在这个行业工作了3~5年的朋友们提供一些职业和技术上的建议。 许多开发者在职业生涯中都会遇到一个瓶颈期&#xff0c;尤其是当你在一个公司待了很长时间&#xff0c;感觉自己的技术和业务能力都无法得到提升时。…

多输入多输出 | Matlab实现基于LightGBM多输入多输出预测

多输入多输出 | Matlab实现基于LightGBM多输入多输出预测 目录 多输入多输出 | Matlab实现基于LightGBM多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现基于LightGBM多输入多输出预测&#xff08;完整源码和数据&#xff09; 1.data为数据集&a…

近期学习文章

DNSlog在渗透测试中的实战技巧 - 网安隐藏源IP&#xff0c;提高溯源难度的几种方案 - 网安FreeBuf网络安全行业门户 【漏洞公告】某平台一个有意思的CSRF // SecTrain安全博客 浅谈Web源码泄漏-安全客 - 安全资讯平台 红队-C2 Server基础构建 - 先知社区FreeBuf网络安全行业…