第一步:在实体上添加不能为空的属性校验
/*********************************************************************
* 文件名:JobLevel.java
* 版权所有 (C) 2018
* 创建日期:2018-06-25
*********************************************************************/
package org.go.show.users.pojo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.go.show.common.dto.BaseEntity;
import javax.validation.constraints.NotEmpty;
/**
* 职务级别
*
* @author going-rocket
*/
@TableName("G_JOB_LEVEL")
@Data
@Getter
@Setter
@JsonIgnoreProperties({"typeName"})
public class JobLevel extends BaseEntity<JobLevel> {
/**
* 职务级别名称
*/
@TableField("NAME")
@NotEmpty(message = "名称项不能为空")
private String name;
/**
* 职务级别代码
*/
@TableField("CODE")
private String code;
/**
* 描述
*/
@TableField("REMARK")
private String remark;
}
@NotEmpty(message = “名称项不能为空”) 则为校验属性不能为空
第二步:自然就是在controller层接受数据的地方标注启动校验
/**
* 创建职务级别
*
* @return
*/
@RequestMapping(value = "/create")
public
@ResponseBody
int createJobLevel(@Valid @RequestBody JobLevel jobLevel) {
jobLevelService.createJobLevel(jobLevel);
return 0;
}
第三步:则就是添加全局异常处理类。
package org.go.show.cloud.users.config;
import lombok.extern.slf4j.Slf4j;
import org.go.show.common.http.DataSet;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@Slf4j
@RestControllerAdvice
public class ExceptionHandlerAdvice {
/**
* 校验为空的异常处理
* @param ex
* @return
*/
@ExceptionHandler(value = MethodArgumentNotValidException.class)
@ResponseBody
public ResponseEntity MethodArgumentNotValidException(MethodArgumentNotValidException ex) {
FieldError fieldError = ex.getBindingResult().getFieldError();
log.info("参数校验异常:{}({})", fieldError.getDefaultMessage(),fieldError.getField());
return DataSet.fail(fieldError.getDefaultMessage());
}
}
常用的校验规则:
@NotEmpty:作用在String、collection、map、数组上,不能为null,size > 0
@NotBlank: 只能用于String,不能为null,也不可以是" ",即trim()后长度大于0
@@NotNull:作用于任何类型,不能为null,可以为空
@AssertTrue:必须为true
@AssertFalse:必须为false
@Min(value):必须为一个数字,且值大于等于指定的值
@Max(value):必须为一个数字,且值小于等于指定的值
@Size(max,min):限制参数大小范围
@Future:必须是一个将来的日期
@Past:必须是一个过去的日期
@Pattern(value):指定正则