实体类常用注解
@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;
@TableLogic
- 作用:在实体类中属性加上@TableLogic注解,表示该字段是逻辑删除字段,实现逻辑删除
- value = “未删除的值,默认值为0”
@ApiModelProperty(value = "逻辑删除")
@TableLogic
@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()方法来启动程序
这个注解主要由三个子注解组成:
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan
以上是本人在做一个小项目时遇到的所有注解,如有不对评论指出改正,谢谢`(∩_∩)′