springboot+vue+mysql项目使用的常用注解

news2024/11/14 15:14:46

实体类常用注解

@Data

@Data 是一个 Lombok 提供的注解,使用 @Data 注解可以简化代码,使代码更加简洁易读。

  • 作用:自动为类生成常用的方法,包括 getter、setter、equals、hashCode 和 toString 等
  • 需要加Lombok的依赖
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.4</version>
    <scope>provided</scope>
</dependency>

@ApiModel

@ApiModel注解是用在接口相关的实体类上的注解,它主要是用来,常常和@ApiModelProperty注解配合使用

  • 作用:对使用该注解的接口相关的实体类添加额外的描述信息,作用在类上
  • value:对所需要特别说明的接口相关实体类进行描述,默认值就是实体类的名称
  • description:对所需要特别说明的接口相关实体类进行较长的描述
  • 参考博客
    • @ApiModel注解与@ApiModelProperty注解
@ApiModel(value="User对象", description="用户表")
public class User implements Serializable {

@ApiModelProperty

  • 作用:添加和操作属性模块的数据
    -value:为此属性的简要描述(数据库内给当前字段的备注是什么在value内就填什么)
  • 参考博客
    • @ApiModelProperty注解的用法(官方平台推荐文章)
@ApiModelProperty(value = "主键id")

在这里插入图片描述

@TableId

  • 作用:将属性所对应的字段指定为主键
  • value:指定主键的字段,要和数据库表中的属性名一致,要不然最终的查询结果是null
  • type:设置主键生成策略,不指定的话默认雪花算法 (数据库勾选自动递增)
    • 雪花算法的核心思想就是:使用一个64 bit的 long 型的数字作为全局唯一ID。算法中还引入了时间戳,基本上保证了自增特性。
  • 参考博客
    • Mybatis-plus知识总结(一)TableId、TableField和TableName注解的作用
    • MYBatis-Plus常用注解@TableName、@TableId、@TableField、@TableLogic
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

@TableName

  • 作用:设置实体类对应的表明
  • value:value指定数据库中的表名
  • 参考博客
    • Mybatis-plus知识总结(一)TableId、TableField和TableName注解的作用
@TableName("user")

@NotBlank

  • 作用:参数校验,适用于 String 类型的数据上,加了@NotBlank 注解的参数不能为 Null 且 trim() 之后 size > 0,必须有实际字符
  • message :自定义异常信息
  • 参考博客
    • @NotNull @NotEmpty @NotBlank java校验注解 validation
    @ApiModelProperty(value = "用户名")
    @NotBlank(message = "用户名不能为空")
    private String username;

@JsonFormat

Jackson中定义的一个注解,是一个时间格式化注解,写在属性上

  • 作用:把DATE类型的数据转化成为我们想要的格式(用于返回日期数据时的时间格式化)
  • pattern:自定义转化时间格式
  • 参考博客
  • SpringBoot - @JsonFormat注解详解
<!-- JSON工具类 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.6</version>
</dependency>

    @ApiModelProperty(value = "出生年月日")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date birthday;

@TableField

  • 作用:解决实体类的字段名与数据库中的字段名不匹配的问题
  • value:指定数据库表中字段名
    @ApiModelProperty(value = "逻辑删除")
    @TableField("`delete`")
    private Integer delete;

Dao层

@Repository

  • 作用:将 DAO 类声明为 Bean,表明这个类具有对数据库CRUD的功能,用在持久层的接口上
  • 参考博客
    • @Repository注解的作用和用法,以及和@Mapper的区别

@Mapper

  • 作用:相当于一个mapper.xml文件,将接口生成一个动态代理类
  • 目的:不再写mapper映射文件
  • 参考博客
    • Mapper层注解讲解

@Param

  • 作用:标记方法参数,指定该参数的名称和类型,在使用该参数时可以通过名称来引用。
  • Constants.WRAPPER:表明参数是wrapper条件
  • 参考博客
    • @Param详解
List<WarnVo> selectWarn(@Param(Constants.WRAPPER) QueryWrapper<WarnVo> wrapper);

Service层

@Service

  • 作用:标记服务层 Bean
  • 好处:使用Service注解的服务类为其他组件提供了一种复用业务逻辑的方法,能够减少重复代码的编写
  • 参考博客
    • Spring注解之Service详解

@Autowired

  • 作用:对类成员变量、方法及构造函数进行标注,完成自动装配的工作
  • required参数默认是true,开启自动装配
  • 参考博客
    • @Autowired用法详解
  • @Autowired和@Resource注解区别
    • 1、@autowired注解由spring提供,只按照bytype注入;@resource注解由j2ee提供,默认按照byname自动注入。
    • 2、@autowired默认按类型进行装配,@resource默认按照名称进行装配。

@Override

  • 作用:表示被标注的方法是一个重写方法
  • 好处:帮助自己检查是否正确的重写父类方法,明显的提示看代码的人,这是重写的方法
  • 参考博客
    • 详解@Override注解

@Transactional

  • 作用:事物的注解,保证数据的一致性
  • 声明式事务:将具体业务与事务处理部分解耦,代码侵入性很低
  • 在对多张表进行操作的时候加上事务注解
  • 参考博客
    • @Transactional详解

Controller层

@RestController

@RestController = @Controller + @ResponseBody

  • 作用:对控制器类进行注释,同时拥有@Controller + @ResponseBody注解的功能
  • 使用该注解响应数据可以是文本或JSON数据类型
  • 属于springmvc,并不属于springboot
  • 参考博客
    • @RestController注解

@RequestMapping

  • 作用:处理请求地址映射,可用于映射一个请求或一个方法,可以用在类或方法上
  • 标注在方法上,表示在类的父路径下追加方法上注解中的地址将会访问到
  • 参考博客
    • @RequestMapping详解
@RequestMapping("/tain/warn")
public class TainWarnController {
    @Autowired
    private ITainWarnService iTainWarnService;
    @Autowired
    private SysDictService sysDictService;
    @Autowired
    private IDeviceService iDeviceService;

    @GetMapping("/queryWarnMessage")
    public R queryWarnMessage(@RequestParam Map<String,Object> params){
        PageUtils page = iTainWarnService.queryWarnPage(params);
        return R.ok().put("page",page);
    }
}

此时访问路径就要加上/tain/warn/queryWarnMessage

RESTFUL URL

RESTful是一种web api的标准,也就是一种url设计规范

@GetMapping(“路径”)

  • 作用:从服务器取出资源(一项或多项)
  • 当客户端发送HTTP GET请求时,Spring Boot会自动将请求映射到具有相应URL路径的控制器方法上
  • 参考博客
    • Spring Boot中的@GetMapping注解,如何使用

@PostMapping(“路径”)

  • 作用:在服务器新建一个资源
  • 自动转换为 JSON 或 XML:@PostMapping 注解可以自动将请求体中的数据转换为 Java 对象,并将返回值转换为 JSON 或 XML 格式,方便客户端解析处理
  • 参考博客
    • Spring Boot 中的 @PostMapping 注解,如何使用

@PutMapping(“路径”)

  • 作用:在服务器更新资源(客户端提供完整资源数据)
  • 不常用,仅作了解

@DeleteMapping(“路径”)

  • 作用:从服务器删除资源
  • 不常用,仅作了解

@RequestParam

  • 作用:将请求参数区域的数据映射到控制层方法的参数上
  • 三大属性
    • value:请求参数名(必须配置)
    • required:是否必需,默认为 true,即 请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
    • defaultValue:设置默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)
  • 参考博客
    • @RequestParam详解

@PathVariable

  • 作用:便捷地提取URL中的动态参数
  • 只支持一个属性value,类型是为String,代表绑定的属性名称
  • 在@RequestMapping请求路径中,将需要传递的参数用花括号{}括起来,然后,通过@PathVariable(“参数名称”)获取URL中对应的参数值。如果@PathVariable标明参数名称,则参数名称必须和URL中参数名称一致
  • 参考博客
    • 请求参数获取:@RequestParam、@PathVariable、@RequestHeader、@CookieValue、@RequestBody、@RequestAttribute注解详细分析
    @GetMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        User user = iUserService.getById(id);
        return R.ok().put("user",user);
    }

@SysLog

  • 作用:标记方法或类,以记录系统日志或操作日志
  • 可以在目标方法或类上添加注解,并在需要记录日志的操作处调用相应的日志记录逻辑
    在这里插入图片描述

@ResponseBody

  • 作用:将java对象转为json格式的数据,然后直接写入HTTP response 的body中;一般在异步获取数据时使用
  • 参考博客
    • @ResponseBody用法详解
    • 浅析@ResponseBody注解作用和原理

非三层架构层

@Component

  • 作用:实现bean的注入,取代 xml配置文件
  • 用于非三层架构但是需要被使用的层

@EnableScheduling

  • 作用:启用 Spring 的定时任务

@Scheduled

  • 作用:指定执行的时间间隔或时间点
  • fixedRate:指定时间间隔
  • cron:使用表达式来决定时间点
  • 在线Cron表达式生成器
  • 参考博客
    • 每天一个注解之@EnableScheduling
    @Scheduled(fixedRate = 5000)  // 每隔5秒执行一次
    public void doTask() {
    @Scheduled(cron = "5 * * * * ? ")//每五秒执行一次
    public void doTask(){

二者皆可

@SpringBootApplication

@SpringBootApplication这个注解是springboot启动类上的一个注解,是一个组合注解,也就是由其他注解组合起来,它的主要作用就是标记说明这个类是springboot的主配置类,springboot可以运行这个类里面的main()方法来启动程序
这个注解主要由三个子注解组成:

  1. @SpringBootConfiguration
  2. @EnableAutoConfiguration
  3. @ComponentScan

以上是本人在做一个小项目时遇到的所有注解,如有不对评论指出改正,谢谢`(∩_∩)′

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

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

相关文章

中小企业“数智未来”行动|ZStack Cloud 荣获“推荐方案”奖

2月29日&#xff0c;以“数智未来 共创数字时代新篇章”为主题的中小企业“数智未来”行动在京成功举办&#xff0c;本次活动由中央广播电视总台央视频和中国中小企业协会作为联合观察单位&#xff0c;带来了一系列帮助中小企业成就业务新价值和数智化升级的优秀产品和方案&…

20240301-2-ZooKeeper面试题(二)

11. Chroot 特性 3.2.0 版本后&#xff0c;添加了 Chroot 特性&#xff0c;该特性允许每个客户端为自己设置一个命名空间。如果一个客户端设置了 Chroot&#xff0c;那么该客户端对服务器的任何操作&#xff0c;都将会被限制在其自己的命名空间下。 通过设置 Chroot&#xff…

Javaweb之SpringBootWeb案例之 Bean管理的Bean作用域详细的解析

2.2 Bean作用域 在前面我们提到的IOC容器当中&#xff0c;默认bean对象是单例模式(只有一个实例对象)。那么如何设置bean对象为非单例呢&#xff1f;需要设置bean的作用域。 在Spring中支持五种作用域&#xff0c;后三种在web环境才生效&#xff1a; 作用域说明singleton容器…

【前端素材】推荐优质后台管理系统网页Hyper平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理和控制网站、应用程序或系统的管理界面。它通常被设计用来让网站或应用程序的管理员或运营人员管理内容、用户、数据以及其他相关功能。后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;通常由管理员使…

SLAM运动模型

经典的SLAM模型是由一个运动方程和一个观测方程构成的&#xff0c;如下图所示&#xff1a; 其中&#xff1a;x_k为机器人的状态&#xff0c;z为机器人的观测数据&#xff0c;u_k为控制数据&#xff0c;y_j观测点&#xff0c;w和v分别为运动噪声和观测噪声。f为运动方程&#xf…

解决方案:win11自带的截图工具无反应,快捷键(win+shift+S)同样无法使用

问题描述 截图时某次开始突然无法使用 winshiftS 调用win11自带的“截图工具”截图了&#xff0c;我机器的表现是&#xff1a; 使用该快捷键无法调用截图工具&#xff0c;鼠标旁边会有蓝色小圈圈转一下&#xff0c;但也就是转一下&#xff1b;在搜索框手动搜索 “截图工具” …

递归算法题练习(数的计算、带备忘录的递归、计算函数值)

目录 递归的介绍 递归如何实现 递归和循环的比较 例题: &#xff08;一、斐波那契数列&#xff0c;带备忘录的递归&#xff09; 如果直接使用递归&#xff0c;难以算出结果&#xff0c;需要优化 优化方法&#xff1a;带备忘录的递归 &#xff08;二、数的计算&#xff09…

【Linux进程】进程状态(运行阻塞挂起)

目录 前言 1. 进程状态 2. 运行状态 3. 阻塞状态 4. 挂起状态 5. Linux中具体的状态 总结 前言 在Linux操作系统中&#xff0c;进程状态非常重要&#xff0c;它可以帮助我们了解进程在系统中的运行情况&#xff0c;从而更好地管理和优化系统资源&#xff0c;在Linux系统中&am…

3D城市模型可视化:开启智慧都市探索之旅

随着科技的飞速发展&#xff0c;我们对城市的认知已经不再局限于平面的地图和照片。今天&#xff0c;让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界&#xff0c;感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…

Harbor高可用(haproxy和keepalived)

Harbor高可用&#xff08;haproxy和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;haproxy和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设…

Java 下载excel文件

一、背景 微信小程序需要导出excel文件&#xff0c;后端技术Java&#xff0c;前端使用uniapp框架&#xff0c;使用excel模板。 二、excel 报表模板 需要补充的内容是以下标记问号的&#xff0c;其中有个表格&#xff0c;内容是动态添加的 三、Java端代码实现 关键步骤&…

SVPWM

SVPWM SVPWMSVPWM原理产品比较特点来源 SVPWM SVPWM的主要思想是以三相对称正弦波电压供电时三相对称电动机定子理想磁链圆为参考标准&#xff0c;以三相逆变器不同开关模式作适当的切换&#xff0c;从而形成PWM波&#xff0c;以所形成的实际磁链矢量来追踪其准确磁链圆。传统…

如何设置从小程序跳转到其它小程序

​有的商家有多个小程序&#xff0c;希望能够通过一个小程序链接到所有其它小程序&#xff0c;用户可以通过点击跳转链接实现从一个小程序跳转到另一个小程序。要怎么才能实现这样的跳转呢。下面具体介绍。 1. 设置跳转。在小程序管理员后台->分类管理&#xff0c;添加一个…

【开源】JAVA+Vue.js实现天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

C++与 Fluke5500A设备通过GPIB-USB-B通信的经验积累

C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 以下内容来自&#xff1a;C与 Fluke5500A设备通过GPIB-USB-B通信的经验积累 - JMarcus - 博客园 (cnblogs.com)START 1.需要安装NI-488.2.281&#xff0c;安装好了之后&#xff0c;GPIB-USB-B的驱动就自动安装好了 注意版本…

苍穹外卖Day03——解决总结3中存在的问题

解决Day03中存在的问题 1. ResponseBody 与 RequestBody2. RequestParam 与 PathVariable3. 字段填充技术&#xff08;注解、AOP、反射&#xff09;3.1. AOP3.2. 注解3.3. 反射3.5 字段填充在项目应用 4. 阿里云云存储OOS 1. ResponseBody 与 RequestBody ResponseBody&…

Docker容器与虚拟化技术:OpenEuler 使用 docker-compose 部署 LNMP

目录 一、实验 1.环境 2.OpenEuler 部署 docker-compose 3.docker-compose 部署 LNMP 二、问题 1.ntpdate未找到命令 2.timedatectl 如何设置时区与时间同步 3.php网页显示时区不对 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 系统架构版本IP备注Lin…

事物

概述&#xff1a; 数据库的事务&#xff08;Transaction&#xff09;是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令。 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么同时成功&#xff0c;要么同时失败。 事…

大模型量化技术原理-ZeroQuant系列

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;从而导致模型变得越来越大&#xff0c;因此&#xff0c;我们需要一些大模型压缩技术来降低模型部署的成本&#xff0c;并提升模型的推理性能。 模型压缩主要分…

神经网络系列---卷积

文章目录 卷积神经网络卷积转置卷积 卷积核和反卷积的三种实现方式卷积的次数计算 卷积神经网络 在神经网络的卷积层中&#xff0c;向下取整&#xff08;Floor&#xff09;是一种常用的策略&#xff0c;特别是在处理输出尺寸不是整数的情况时。当你计算出卷积层输出的尺寸&…