第一步:在實體上添加不能爲空的屬性校驗
/*********************************************************************
* 文件名: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):指定正則