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

实体类常用注解

@Data

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

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

@ApiModel

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

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

@ApiModelProperty

java 复制代码
@ApiModelProperty(value = "主键id")

@TableId

java 复制代码
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

@TableName

java 复制代码
@TableName("user")

@NotBlank

java 复制代码
    @ApiModelProperty(value = "用户名")
    @NotBlank(message = "用户名不能为空")
    private String username;

@JsonFormat

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

  • 作用:把DATE类型的数据转化成为我们想要的格式(用于返回日期数据时的时间格式化)
  • pattern:自定义转化时间格式
  • 参考博客
  • SpringBoot - @JsonFormat注解详解
java 复制代码
<!-- JSON工具类 -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.6</version>
</dependency>
java 复制代码
    @ApiModelProperty(value = "出生年月日")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date birthday;

@TableField

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

@TableLogic

  • 作用:在实体类中属性加上@TableLogic注解,表示该字段是逻辑删除字段,实现逻辑删除
  • value = "未删除的值,默认值为0"
java 复制代码
    @ApiModelProperty(value = "逻辑删除")
    @TableLogic
    @TableField("`delete`")
    private Integer delete;

Dao层

@Repository

@Mapper

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

@Param

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

Service层

@Service

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

@Autowired

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

@Override

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

@Transactional

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

Controller层

@RestController

@RestController = @Controller + @ResponseBody

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

@RequestMapping

  • 作用:处理请求地址映射,可用于映射一个请求或一个方法,可以用在类或方法上
  • 标注在方法上,表示在类的父路径下追加方法上注解中的地址将会访问到
  • 参考博客
java 复制代码
@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("路径")

@PostMapping("路径")

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

@PutMapping("路径")

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

@DeleteMapping("路径")

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

@RequestParam

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

@PathVariable

java 复制代码
    @GetMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        User user = iUserService.getById(id);
        return R.ok().put("user",user);
    }

@SysLog

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

@ResponseBody

非三层架构层

@Component

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

@EnableScheduling

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

@Scheduled

java 复制代码
    @Scheduled(fixedRate = 5000)  // 每隔5秒执行一次
    public void doTask() {
java 复制代码
    @Scheduled(cron = "5 * * * * ? ")//每五秒执行一次
    public void doTask(){

二者皆可

@SpringBootApplication

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

这个注解主要由三个子注解组成:

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

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

相关推荐
mygljx2 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
没有bug.的程序员2 小时前
Serverless 弹性扩容引发的全线熔断:Spring Boot 启动耗时从 1s 压缩至 0.3s 的物理级绞杀
java·spring boot·kubernetes·serverless·扩容·线上
终端鹿3 小时前
Vue2 迁移 Vue3 避坑指南
前端·javascript·vue.js
Bdygsl3 小时前
MySQL(1)—— 基本概念和操作
数据库·mysql
身如柳絮随风扬3 小时前
什么是左匹配规则?
数据库·sql·mysql
jiankeljx3 小时前
mysql之如何获知版本
数据库·mysql
SuperEugene4 小时前
TypeScript+Vue 实战:告别 any 滥用,统一接口 / Props / 表单类型,实现类型安全|编码语法规范篇
开发语言·前端·javascript·vue.js·安全·typescript
luom01024 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端
小李来了!4 小时前
数据库DDL、DML、DQL、DCL详解
数据库·mysql
希望永不加班4 小时前
SpringBoot 核心配置文件:application.yml 与 application.properties
java·spring boot·后端·spring