那些项目中遇到的注解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • VO包与实体类中注解:
    • @Data
    • @I18nExcel
    • @Excel(name = "a.abc", width = 20)
    • @TableField(exist = false) 忽略这个字段
    • @ApiModelProperty(value = "字段注释")
    • @TableName("表名")
    • @Accessors(chain = true)
    • @EqualsAndHashCode(callSuper = false)
    • @ApiModel(value="表名对象", description="XXX页面")
    • @TableId(type = XXX)
    • @ApiModelProperty(value = "字段注释")
    • @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    • @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    • @ApiModelProperty(value = "属性的描述")
  • service包
    • @Service
    • @Transactional注解详细使用
    • @Autowired
  • controller包
    • @Api(tags = "订单管理")
    • @RestController
    • @RequestMapping("/book/BookList")
    • @Slf4j
    • @AutoLog(value = "修改-通过id查询")
    • @ApiOperation(value = "修改-通过id修改", 字段名 = "修改结果-通过id查询")
    • @GetMapping(value = "/queryById")
    • @RequestMapping(value = "/importExcel", method = RequestMethod.POST)


前言

提示:这里可以添加本文要记录的大概内容:


VO包与实体类中注解:

@Data

@Data: 这是Lombok库中的一个注解,用于在编译时自动生成 getter、setter、equals、hashCode 和 toString方法,从而简化Java类的编写。

@I18nExcel

@I18nExcel: 这是一个自定义注解,用于处理多语言环境下的 Excel 导出导入。具体的功能取决于注解的实现方式,它可能用于标识一个类,以便在处理 Excel 时考虑到国际化(I18n)的需求。意味着该注解支持多语言,可以根据不同的语言环境自动切换显示不同的内容。

@Excel(name = “a.abc”, width = 20)

@Excel(name = "a.abc", width = 20) 这是MyBatis-Plus中的一个自定义注解:用于Excel导入导出时的表格头设置,name属性表示指定Excel中的列名,width属性表示表格列的宽度。

@TableField(exist = false) 忽略这个字段

  • @TableField(exist = false):这是MyBatis-Plus中的一个自定义注解,用于标识一个属性不是数据库表中的字段,在进行CRUD操作时不会被映射到SQL语句中。这通常用于一些逻辑上的计算属性或者数据库表中不存在的字段。
  • exist属性设置为 false 表示该字段在数据库表中不存在,或者在进行某些操作时不需要考虑这个字段。

@ApiModelProperty(value = “字段注释”)

这个Java注解通常用在Spring框架的RESTful API开发中,用于生成API的文档说明

  • @ApiModelProperty:指定一个模型属性的说明信息,例如名称、类型、是否必填等,该注解用于在文档中描述API模型属性的功能和含义。
  • value = “字段注释”:该注解的value属性用于描述该属性的文本说明信息

因此,当使用Swagger等API文档工具生成API文档时,这个注解可以帮助开发者快速理解API的数据模型和属性含义,提高代码可读性和维护性。

@TableName(“表名”)

@TableName:这是MyBatis-Plus中的一个自定义注解,
用于指定相应的数据库表名

@Accessors(chain = true)

这是Lombok库中的一个注解,用于在编译时自动生成链式方法,使得可以链式调用set方法,例如 ‘setA(1).setB(2)’。

@EqualsAndHashCode(callSuper = false)

这个注解用于在编译时自动生成 equals 和 hashCode 方法。'callSuper = false’表示不调用父类的equals和hashCode方法

@ApiModel(value=“表名对象”, description=“XXX页面”)

@ApiModel:这是Swagger库中的一个注解,用于描述一个API模型的信息,包括模型的名称和描述等。在这个例子中,它描述了’XXX表名’对象,说明这个对象是用于描述’XXX功能’的。

@TableId(type = XXX)

@TableId(type = IdType.ASSIGN_ID):这是一个MyBatis-Plus的注解,用于标记数据库表的主键字段。‘type = IdType.ASSIGN_ID’表示主键的生成策略为’手动分配ID’,即你需要自行设置主键的值。

@ApiModelProperty(value = “字段注释”)

这是一个Swagger的注解,用于生成 API 文档时,描述字段的含义。
比如:value = "主键",主键就是这个字段的描述。

方便前端开发人员理解该属性的含义和用途。它的value属性用来描述该属性的名称和作用

@JsonFormat(timezone = “GMT+8”,pattern = “yyyy-MM-dd HH:mm:ss”)

  • 该注解定义了时间格式和时区属性,用于在序列化和反序列化时转换时间格式
  • “timezone” 属性定义了时区,此处为东八区(GMT+8)
  • “pattern” 属性定义了时间格式,此处为 “yyyy-MM-dd HH:mm:ss”,表示年月日时分秒的格式
  • 这个注解通常与Jackson库一起使用,用于JSON序列化和反序列化。

@DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)

  • 该注解定义了与字符串相互转换时使用的时间格式
  • “pattern” 属性定义了日期时间格式,与@JsonFormat注解中的 “pattern” 属性相同,用于格式化日期字符串

主要用于Spring的表单绑定,确保前端传入的日期时间数据符合指定的格式。

@ApiModelProperty(value = “属性的描述”)

  • 该注解是用于Swagger生成API文档时的说明注解,表示该属性为创建日期,并在文档中显示该属性的说明,

总的来说,这些注解通常用在实体类的属性上,以指定如何处理和展示日期时间数据,以及如何为API文档提供描述。例如:

public class SomeEntity {  @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")  @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")  @ApiModelProperty(value = "创建日期")  private Date createdDate;  // ... 其他属性和方法 ...  
}

service包

@Service

@Service注解表示这是一个服务层的Bean,由Spring容器管理,可被自动注入到其他需要使用的类中。通常在服务层中注入DAO层的Bean,调用DAO层的方法来实现业务逻辑的处理。

用途:这个注解用于标记一个类为服务类。服务类通常是业务逻辑的主要承载者,并处理数据访问对象(DAO)或数据访问服务(如JPA或Hibernate)以执行CRUD(创建、读取、更新、删除)操作。

好处:这个注解不仅仅是一个标记,它实际上会创建一个Spring管理的bean,这意味着Spring容器将负责这个类的生命周期,包括其创建、初始化和销毁。

@Transactional注解详细使用

用途:这个注解用于声明事务的边界。当你在方法上使用它时,这意味着该方法内的所有数据库操作要么全部成功,要么全部失败回滚。这对于确保数据的完整性和一致性非常重要。

属性:

  • rollbackFor: 这个属性用于指定哪些异常应该触发事务回滚。
  • 比如:rollbackFor = Exception.class意味着任何 Exception或其子类的实例都会触发事务回滚。
    -好处:使用@Transactional注解可以简化事务管理,因为它自动为你处理事务的提交和回滚,而不需要手动管理。

@Autowired

用途:这个注解用于自动装配依赖。Spring容器会自动识别这个注解,并将匹配的bean注入到被标注的字段、构造函数或方法中。

好处:这大大简化了依赖注入的过程,因为你不需要手动创建和管理依赖对象。Spring会为你处理这一切。

controller包

@Api(tags = “订单管理”)

用途:tags: 这个属性用于为相关的API操作提供一个或多个标签。在生成的文档中,这些标签可以帮助用户更好地组织和理解API的功能。标记这个接口所属的API分组,即订单管理。

解释:这个注解来自于Swagger框架,用于描述API的元数据,包括API的分组、标签、描述等

@RestController

用途:这个注解是Spring框架提供的,用于标记一个类为RESTful控制器。这意味着这个类中的方法将处理HTTP请求并返回HTTP响应。

好处:这个注解组合了@Controller@ResponseBody的功能,使得你可以更方便地创建RESTful API

解释:这个注解告诉Spring框架,这个类是一个控制器,可以处理REST请求,并且每个方法都返回数据而不是视图。

@RequestMapping(“/book/BookList”)

用途:定义控制器处理的请求路径。这意味着所有在此控制器中的方法都将处理以此路径为前缀的请求。

解释:这个注解用于映射请求的URI到特定的控制器方法上,即/book/BookList路径的请求将由这个控制器处理。

好处:通过在一个控制器上设置基础路径,可以更方便地组织和管理相关的API操作。

@Slf4j

用途:自动生成日志对象。它会自动为你的类生成一个名为log的Logger实例,可以用它来记录日志。

好处:通过使用Lombok的@Slf4j注解,你可以避免手动创建和管理Logger实例,可以使用log对象输出日志信息,方便调试和排查问题。从而使代码更加简洁和易于维护。

@AutoLog(value = “修改-通过id查询”)

用途:这个注解通常用于自动记录API操作的日志。它可以帮助你跟踪和调试API的使用情况,以及了解哪些操作被执行和何时执行。

@ApiOperation(value = “修改-通过id修改”, 字段名 = “修改结果-通过id查询”)

@ApiOperation: 这个注解的作用是对API方法进行描述,用于生成API文档。它可以帮助你为每个API操作提供详细的描述和说明。

  • value:这个属性用于提供一个简短的描述,以解释这个API操作的目的或做了什么。
  • 字段名(表中字段):这个属性用于提供更详细的说明或注释,以进一步解释这个API操作。

@GetMapping(value = “/queryById”)

用途:这个注解是Spring框架提供的,用于定义HTTP GET请求的处理方法。它指定了哪个URL路径应该映射到这个方法,以便处理GET请求。该注解通常用于查询操作

  • value: 这个属性定义了URL路径。这里指定了请求的路径为"/queryById"。
  • 好处:通过使用 @GetMapping 注解,你可以更方便地创建和处理 RESTful API 的 GET请求。

@RequestMapping(value = “/importExcel”, method = RequestMethod.POST)

@RequestMapping是Spring中一个用于映射请求路径和请求方法的注解,它可以被用于类或者方法上。在类上使用该注解可以为类中所有方法的请求路径添加一个前缀,而在方法上使用该注解则可以为该方法指定一个请求路径。

具体来说,该注解可以接受以下属性:

  • value:指定请求路径,可以包含路径变量和通配符。
  • method:指定请求方法,可以是GET、POST、PUT、DELETE等。
  • params:指定请求参数及其值。
  • headers:指定请求头及其值。
  • consumes:指定请求体的MIME类型。
  • produces:指定响应体的MIME类型。

通过使用不同的属性,可以创建不同类型的请求映射,以处理不同类型的请求。在Spring MVC中,该注解是最常用的注解之一,它可以使得请求的处理更加清晰和规范化。

例子:

@RestController  
@RequestMapping("/api/v1") // 基础路径为 "/api/v1"  
public class MyController {  @GetMapping("/users") // 请求映射为 "/api/v1/users"  public List<User> getUsers() {  // ... 方法体 ...  }  @PostMapping("/users") // 请求映射为 "/api/v1/users",HTTP方法为POST  public User createUser(@RequestBody User user) {  // ... 方法体 ...  }  
}  

在上面的例子中,@RequestMapping("/api/v1")定义了基础路径为/api/v1。在该类中的每个处理方法上,我们使用了更具体的@GetMapping@PostMapping注解来定义具体的请求映射路径和HTTP方法。

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

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

相关文章

动态规划算法(2)--最大子段和与最长公共子序列

目录 一、最大子段和 1、什么是最大子段和 2、暴力枚举 3、分治法 4、动态规划 二、最长公共子序列 1、什么是最长公共子序列 2、暴力枚举法 3、动态规划法 4、完整代码 一、最大子段和 1、什么是最大子段和 子段和就是数组中任意连续的一段序列的和&#xff0c;而…

[Linux]记录plasma-wayland下无法找到HDMI接口显示器的问题解决方案

内核&#xff1a;Linux 6.5.5-arch1-1 Plasma 版本&#xff1a;5.27.8 窗口系统&#xff1a;Wayland 1 问题 在前些时候置入了一块显示器&#xff0c;接口较多&#xff0c;有 HDMI 接口&#xff0c;type-C 接口。在 X11 中可以找到外接显示器&#xff0c;但是卡顿明显&#xf…

算法排序在程序中有什么作用

算法排序是将一组数据按照一定的规则进行排列的过程。常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a;从前往后逐个比较相邻元素&#xff0c;若逆序则交换&#xff0c;每一轮确定一个最大元…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

【Excel】快速提取某个符号前面的数据内容

【问题描述】 在使用excel整理数据过程中&#xff0c;经常与需要调整数据后&#xff0c;进行使用。 例如凭证导出后&#xff0c;科目列是包含科目编码和科目名称的。 但由于要将数据复制到其他的导入模板上使用&#xff0c;对应的模板只需要科目编码&#xff0c;不需要科目名称…

常说的I2C协议是干啥的(电子硬件)

I2C&#xff08;Inter-Integrated circuit&#xff09;协议是电子传输信号中常用的一种协议。 它是一种两线式串行双向总线&#xff0c;用于连接微控制器和外部设备&#xff0c;也因为它所需的引脚数只需要两条&#xff08;CLK和DATA&#xff09;&#xff0c;硬件实现简单&…

Acwing 906. 区间分组

Acwing 906. 区间分组 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 这段代码是用来维护一个最小堆&#xff0c;以确保右边界不相交的区间被正确地保留在堆中。让我详细解释这段代码&#xff1a; heap.empty()&#xff1a;这个条件检查最小堆 heap 是否为…

【牛客网】JZ39 数组中出现次数超过一半的数字

题目 思路 思路1 将数组排序,再保证有结果的情况下,此时数组中间的数字就是想要的结果 思路2 在保证有结果的情况下,此时数组的的众数是数组长度的一半以上 所以我们可以通过抵消的做法来找到最终的结果 我们可以从头遍历这个数组,如果两个数不相同,则消去这两个数,最坏的…

OpenCV 概念、整体架构、各模块主要功能

文章目录 1. OpenCV 概念2 OpenCV主要模块3 各模块 详细介绍3.1 calib3d 标定3.2 core 核心功能模块3.4 features2d 二维特征3.5 flann 快速近似近邻算法库3.7 highgui 高级图形用户界面3.9 imgproc 图像处理模块3.10 ml 机器学习模块3.11 objdetect 目标检测模块3.12 photo 数…

Bug:elementUI样式不起作用、Vue引入组件报错not found等(Vue+ElementUI问题汇总)

前端问题合集&#xff1a;VueElementUI 1. Vue引用Element-UI时&#xff0c;组件无效果解决方案 前提&#xff1a; 已经安装好elementUI依赖 //安装依赖 npm install element-ui //main.js中导入依赖并在全局中使用 import ElementUI from element-ui Vue.use(ElementUI)如果此…

C++笔记之环形队列

C笔记之环形队列 code review! 文章目录 C笔记之环形队列1.概念I——摘自 https://mp.weixin.qq.com/s/HUn9TF09RZ-UJKYPR5ZXhA2.概念II——摘自 http://t.csdnimg.cn/72bng3.概念III—— 摘自https://mp.weixin.qq.com/s/9Ga502p1DLcc6o75JBQlDg4.概念IV—— 摘自https://mp…

基于SSM的网上药品售卖系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Django之模板

一&#xff09;模板&#xff08;T&#xff09; 什么时候会使用模板呢&#xff1f; 仅对于Django这个框架来说&#xff0c;因为其是默认前后端不分离的框架&#xff08;前后端不分离值开发时前后端的代码在一起&#xff0c;不通过接口的方式连接&#xff0c;通过模板渲染的方式…

Ubuntu 20.04 安装部署 TiDB DM v7.3.0 集群【全网独家】

文章目录 测试环境说明TiDB 单机环境部署DM 集群部署1. 免密设置2. 组件下载3. DM 配置文件模板获取4.DM 配置文件设置5.部署与启动 DM 集群 前言&#xff1a; 放眼全网&#xff0c;我找不出一篇在 Ubuntu 里面搭建 DM 集群的文章&#xff0c;虽然 TiDB 官方推荐使用 CentOS 系…

多线程 - 阻塞式队列

阻塞队列 阻塞队列,也是一个队列 ~~ 先进先出 实际上有一些特殊的队列,不一定非得遵守先进先出的 ~~ 优先级队列(PriorityQueue) 阻塞队列,也是特殊的队列,虽然也是先进先出的,但是带有特殊的功能: 阻塞 如果队列为空,执行出队列操作,就会阻塞.阻塞到另一个线程往队列里添加元…

gitee 远程仓库操作基础(二)

(1&#xff09;clone远端仓库,本地建立分支推送 (基于远程仓库版本库 本地建立分支开发新功能) git clone gitgitee.com:xxxxx/alsa_test.git git remote add origin gitgitee.com:xxxxx/alsa_test.git进入clone过后路径代码,查看本地分支,发现该项目远程仓库有很多分支 基于…

分布式文件存储系统Minio实战

分布式文件系统应用场景 互联网海量非结构化数据的存储需求电商网站&#xff1a;海量商品图片视频网站&#xff1a;海量视频文件网盘 : 海量文件社交网站&#xff1a;海量图片 1. Minio介绍 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存…

【JVM】第四篇 垃圾收集器ParNewCMS底层三色标记算法详解

导航 一. 垃圾收集算法详解1. 分代收集算法2. 标记-复制算法3. 标记-清除算法4. 标记-整理算法二. 垃圾收集器详解1. Serial收集器2. Parallel Scavenge收集器3. ParNew收集器4. CMS收集器三. 垃圾收集底层三色标记算法实现原理1. 垃圾收集底层使用三色标记算法的原因?2. 垃圾…

[Linux 基础] 一篇带你了解linux权限问题

文章目录 1、Linux下的两种用户2、文件类型和访问权限&#xff08;事物属性&#xff09;2.1 Linux下的文件类型2.2 基本权限2.3 文件权限值的表示方法&#xff08;1&#xff09;字符表示方法&#xff08;2&#xff09;8进制数值表示方法 2.4 文件访问权限的相关设置方法(1) chm…

kafka简易搭建(windows环境)

1&#xff0c;下载 Apache Kafka 查找 kafka_2.13-3.2.1.tgz 2&#xff0c;java版本需要17以上 3&#xff0c;配置server.properties的log.dirs目录、zookeeper.properties 的dataDir目录 windows反斜杠地址 4&#xff0c;启动 cd D:\app\kafka_2.13-3.2.1 .\bin\window…