1. @RestController
这是一个复合注解,在controller层加上此注解,定义返回的数据都是json格式
2. @RequestBody
1)前端向后端发送的是json数据,此注解可以将json主动封装成java bean,示例
public void save(@RequestBody Furn furn)
2)前端向后端发送的是format格式或者参数,可以不加此注解,会自动封装成java bean
3. @TableId
作用与bean的某一个属性上,用于指定该属性对应数据库里表的主键。
该注释有type属性,@TabledId(type = IdType.AUTO)
的作用是定义一个bean属性在表里的主键、自增
4.@RequestMapping
使用此注解后,某方法使用GET和POST都可以访问到
5.@PathVariable
将请求的uri中的某一部分放到方法的输入参数中.
6.@RequestParam
url问号后面携带的参数http://localhost:9091/furnByPage?pageNum=1&pageSize=2
对应的controller是
@RequestMapping("/furnByPage")
public Result listFurnByPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "2") Integer pageSize) {
Page<Furn> page = furnService.page(new Page<>(pageNum, pageSize));
return Result.success(page);
}
7.@Validated
后端校验注释。以下面代码为例,将json封装成bean的时候,会先进行规则校验(规则自己定义,可以使用hibernate-validator)
@PostMapping("/save")
public Result save(@Validated @RequestBody Furn furn, Errors errors) {
HashMap<String, Object> map = new HashMap<>();
List<FieldError> fieldErrors = errors.getFieldErrors();
for (FieldError fieldError: fieldErrors) {
map.put(fieldError.getField(), fieldError.getDefaultMessage());
}
if (map.isEmpty()) {
log.info("furn={}", furn);
boolean save = furnService.save(furn);
return Result.success();
} else {
return Result.error("400", "后端校验失败", map);
}
}
hibernate-validator可以在bean的不同属性上增加注解,进而增加校验规则,下面是例子
@Data
//@TableName("furn") // 如果bean和表名不一致,可以使用此注释
public class Furn {
@TableId(type = IdType.AUTO)
private Integer id;
@NotEmpty(message = "请输入家具名")
private String name;
@NotEmpty(message = "请输入厂商名")
private String maker;
@NotNull(message = "请输入数字")
@Range(min = 0, message = "价格不小于0")
private Double price;
@NotNull(message = "请输入数字")
@Range(min = 0, message = "销量不小于0")
private Integer sales;
@NotNull(message = "请输入数字")
@Range(min = 0, message = "库存不小于0")
private Integer stock;
}