一、Controller控制器使用注解
1.类注解
@Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Api:用在controller上,对controller进行注释
@RestController:相当于@Controller加上@ResponseBody(返回类型非页面)
@RequestMapping:配置类的路径,举例:@RequestMapping("/{userId}/test"),访问举例:/1/test
2.类属性注解
@Autowired 依赖注入Service
3.方法注解
@ApiOperation:用在API方法上,对该API做注释,说明API的作用;
@PostMapping:举例:@PostMapping("/list")
@GetMapping:举例:@GetMapping("/{id}")
4.方法属性注解
@ApiParam 作用在接口方法上,描述单个参数信息,属性基本与@ApiImplicitParam一样,但可以作用在方法、参数、属性上;
@PathVariable 映射 URL 绑定的占位符,举例: @PathVariable("userId")
@RequestBody 主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的),所以只能发送POST请求。
@ApiIgnore 注解主要作用在方法上,类上,参数上。当作用在方法上时,方法将被忽略;作用在类上时,整个类都会被忽略;作用在参数上时,单个具体的参数会被忽略。
二、ServiceImpl使用注解(Service无注解)
1.类注解
@Service 自动注册到Spring容器
2.类属性注解
@Autowired 依赖注入Repository
3.方法注解
@Override 重写
@Transactional rollbackFor 属性来定义回滚的异常类型,使用 propagation 属性定义事务的传播行为。
PROPAGATION_REQUIRED 支持当前事务,如果当前没有事务,则创建一个事务,这是最常见的选择。默认为此事务。
PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,就把当前事务挂起。
举例:下面1情况是开始方法,2情况是1调2
@Transactional(rollbackFor = {Exception.class}, propagation = Propagation.REQUIRED)
@Transactional(rollbackFor = {Exception.class}, propagation = Propagation.REQUIRES_NEW)
@Async 申明该方法是一个异步任务,启动主类必须加@EnableAsync注解
三、RepositoryImpl使用注解(Repository无注解)
1.类注解
@Component 泛指各种组件
2.类属性注解
@Autowired 依赖注入Mapper
3.方法注解
@Override 重写
四、Mapper使用注解
1.方法属性注解
@Param 参数命名,举例: @Param("id")
五、实体类注解
1.类注解
@ApiModel 用在实体类上,对实体类做注释(value:字符串,模型的简短别名,使得在文档的导航中便于识别;description:字符串,模型的附加描述),举例: @ApiModel("测试")
@Data setter、getter方法
@AllArgsConstructor 所有参数构造器
@NoArgsConstructor 无参数的构造器
@ToString(callSuper = true) 重写toSting方法(将父类中的属性也算到tostring中)
@EqualsAndHashCode(callSuper = false) 重写equalsAndhashCode方法(若为true将父类中的属性也算到tostring中)
@Table 声明此对象映射到数据库的数据表,举例: @Table(name = "test")
2.类属性注解
@ApiModelProperty:用在属性上,对属性做注释,举例:@ApiModelProperty("表ID,主键,供其他表做外键")
@Id 解用于声明一个实体类的属性映射为数据库的主键列
@GeneratedValue 注解用于标注主键的生成策略 默认情况下,JPA自动选择一个最适合低层数据库的主键生成策略:sqlServer对应的identity,mySql对应 auto increment
@Transient 实体类中使用@Table注解后,想要添加数据库表中不存在的字段,就要使用@Transient这个注解。
@Length 属性值长度,举例:@Length(max = 80)
@NotNull 不能为null,但可以为empty
@NotEmpty 不能为null,而且长度必须大于0
@NotBlank 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
@Valid 验证集合里面的对象,属性为list需要添加
@JsonFormat Date类型get方法加注解,举例:@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat Date类型set方法加注解,举例:@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonSerialize 用于数据转换,该注解作用在该属性的getter()方法上,举例:@JsonSerialize(using = ToStringSerializer.class) 让系统序列化时,保留相关精度。
六、引入jar
1.RequestMapping等注解
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.16.RELEASE</version>
</dependency>
2.Transactional注解
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.16.RELEASE</version>
</dependency>
3.ToStringSerializer类和JsonSerialize注解
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.8</version>
</dependency>
4.Param注解
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
5.Length等注解
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
6.Table等注解
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.2.Final</version>
</dependency>
7.swagger注解
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
8.lombok注解
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
</dependency>