mybatis-plus整合@Valid参数校验

tech2023-11-16  82

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@Email参数值是邮箱格式,也可以通过@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(); } }

参考文章:Spring框架 之@Valid注解的使用(嵌套类型的效验)

最新回复(0)