java基于注解参数非空校验

直接上代码

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);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容