更新和添加参数校验优化(2024-3-26)
所花时间(包括上课): | 1 h左右 |
代码量(行): | 150 左右 |
搏客量(篇): | 1 |
了解到的知识点: | 更新和添加参数校验优化 |
备注(其他): |
由于更新文章分类和添加文章分类,参数校验时,一个需要ID notnull 一个只是让id自动增长,
所以当再次添加新的文章时会出现id为空的错误:
这时候就要用到validation提供的分组校验:
把校验项进行分类,在完成不同功能的时候,校验指定组中的校验项
package com.di.bigevent.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class Category {
@NotNull(groups=Update.class)
private Integer id;//主键ID
@NotEmpty(groups={Add.class,Update.class})
private String categoryName;//分类名称
@NotEmpty(groups={Add.class,Update.class})
private String categoryAlias;//分类别名
private Integer createUser;//创建人ID
@JsonFormat(pattern = "yyyy-HH-dd HH:mm:ss")
private LocalDateTime createTime;//创建时间
@JsonFormat(pattern = "yyyy-HH-dd HH:mm:ss")
private LocalDateTime updateTime;//更新时间
public interface Add{
}
public interface Update{
}
}
///////////////////////////////////////////////////
@PostMapping//insert
public Result add(@RequestBody @Validated(Category.Add.class) Category category)
@PutMapping//update
public Result update(@RequestBody @Validated(Category.Update.class) Category category)
定义校验项时如果没有指定分组,则属于Default分组,分组可以继承
可以改为:
package com.di.bigevent.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class Category {
@NotNull(groups=Update.class)
private Integer id;//主键ID
private String categoryName;//分类名称
private String categoryAlias;//分类别名
private Integer createUser;//创建人ID
@JsonFormat(pattern = "yyyy-HH-dd HH:mm:ss")
private LocalDateTime createTime;//创建时间
@JsonFormat(pattern = "yyyy-HH-dd HH:mm:ss")
private LocalDateTime updateTime;//更新时间
public interface Add extends Default{
}
public interface Update extends Default{
}
}