直接上代码
1.创建注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ParamCheck {
String message() default "";
}
2.创建工具类
import org.apache.commons.lang.StringUtils;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
public class ParamCheckUtil {
/**
* 判断类属性是否为空
* @param t
* @throws Exception
*/
public static <T> String paramCheck(T t) throws Exception {
if(null == t){
return "参数错误,请确认!";
}
Class<?> aClass = t.getClass();
//获取当前对象所有属性 使用带Declared的方法可访问private属性
Field[] declaredFields = aClass.getDeclaredFields();
//遍历对象属性
for (Field field : declaredFields) {
//开启访问权限
field.setAccessible(true);
//使用此方法 field.get(Object obj) 可以获取 当前对象这个列的值
Object o = field.get(t);
Annotation annotation = field.getDeclaredAnnotation(ParamCheck.class);
//如果没有设置当前注解 不用校验
if(annotation == null){
continue;
}
//获取注解接口对象
ParamCheck notNull = (ParamCheck)annotation;
//如果设置了当前注解,但是没有值,抛出异常
if(o == null){
if(StringUtils.isNotBlank(notNull.message())){
//设置了注解message值 直接返回
return notNull.message();
}else{
//没有设置可以拼接
return field.getName()+" is null";
}
}
}
return null;
}
}
3.调用
#这个地方可以自行调整判断
String paramCheckStr = ParamCheckUtil.paramCheck(addEmpParam);