1. 对于接口传入的对象,通常我们会定义某些字段不能为空,可以在字段上加入注解@NotNull进行限制;如下图:
实例类:
@Data
public class Person{
@NotNull(message = "姓名不能为空")
private String personName;
@NotNull(message = "年龄不能为空")
private Integer personAge;
@NotNull(message = "性别不能为空")
private String personSex;
private String personId;
private String personEmail;
}
2. 有时,需进行判断的字段存在对象内部List对象中,此方法会不起作用,如下图:
@Data
public class Person{
private String personId;
private String personEmail;
List<Student> students;
@Data
public class Student{
@NotNull(message = "姓名不能为空")
private String personName;
@NotNull(message = "年龄不能为空")
private Integer personAge;
@NotNull(message = "性别不能为空")
private String personSex;
}
}
校验方法:
@Slf4j
public class BaseVerify{
protected void paramVerify(Student student) {
try{
//获取对象所有属性集合
Field[] fields = student.getClass().getDeclaredFields();
//遍历所有属性
for (Field field : fields){
NotNull annotation = field.getAnnotation(NotNull.class);
if (ObjectUtil.isNotNull(annotation)){
//设置允许访问私有属性
field.setAccessible(Boolean.TRUE);
Object value = field.get(student);
//判断该参数是否为空
Preconditions.checkArgument(ObjectUtil.isNotEmpty(value), "参数展示名称重复");
}
} catch(IllegalAccessException e){
log.warn("解析数据异常",e);
}
}
}
Student student= new Student ();
student.setPersonName("xiaoming");
student.setPersonAge(18);
student.setPersonId("1234567");
paramVerify(student);
}