1.使用MyBatisCodeHelperPro生成实体类
使用插件来生成实体类以及mapper以节省开发时间
https://blog.csdn.net/weixin_39025362/article/details/108214020
2.@Valid 注解类型的使用
注解 | 作用 |
---|---|
@NotNull | 参数不能为null |
@NotBlank | 参数值不不为null,且去除首尾空格后长度不为0,多于用字符串 |
@NotEmpty | 参数不为null且不为空,字符串长度不为0、集合大小不为0 |
@Size(max,min) | 参数字符长度必须在min到max之间 |
@Pattern(value) | 参数必须符合指定的正则表达式 |
@Null | 参数只能为null |
参数值是邮箱格式,也可以通过@Pattern自定义正则表达式来实现 | |
@Past | 参数必须是过去的日期 |
@Future | 参数必须是未来的日期 |
@Max(value) | 参数不能大于value的值 |
@Min(value) | 参数不能小于value的值 |
3.添加需要校验的参数
@Data
@TableName(value = "project")
@ApiModel(value = "项目-实体")
public class Project {
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty(value = "id")
private Long id;
/**
* 项目名称
*/
@TableField(value = "project_name")
@ApiModelProperty(value = "项目名称")
@NotNull(message = "项目名称不能为空")
@NotBlank(message = "项目名称不能为空")
private String projectName;
/**
* 创建人
*/
@TableField(value = "creator")
@ApiModelProperty(value = "创建人姓名")
@Size(max = 20, min = 2,message = "创建人姓名长度需要在2-20字符长度之间")
private String creator;
/**
* 创建时间
*/
@TableField(value = "create_time")
@ApiModelProperty(value = "创建时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time")
@ApiModelProperty(value = "更新时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* 描述信息
*/
@TableField(value = "description")
@ApiModelProperty(value = "描述信息")
private String description;
}
4.定义全局异常处理器
新建一个类ExceptionHandler,在这个类上加上@ControllerAdvice或@RestControllerAdvice注解,就配置成全局处理类了。这个取决于你的Controller层用的是@Controller还@RestController来决定。
然后@ExceptionHandler注解并指定需要处理的异常类型,接着在方法内编写对该异常的操作逻辑,即可完成对异常信息的处理,因为参数校验失败会抛出MethodArgumentNotValidException,我们拿到自定义的异常错误信息进行返回即可。
@RestControllerAdvice
public class ExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String MethodArgumentNotValidExceptionHandler(MethodArgumentNotValidException e) {
ObjectError objectError = e.getBindingResult().getAllErrors().get(0);
return objectError.getDefaultMessage();
}
}