springboot很好用的自定义验证工具类

作者: gavin 分类: Java 发布时间: 2023-04-28 02:33

请求数据的验证可以用@Valid,但是service层的验证用if 有太繁琐,推荐使用这样的工具类

需要和自定义异常类配合使用

/**
 * @author: Gavin
 * @created: 2023/4/12 21:06
 * @description: 数据验证
 **/

public class Assert {

    public static void isNull(Object obj, String msg) {
        if (obj == null)
            throw new StockerException(msg);
    }

    public static void notNull(Object obj, String msg) {
        if (obj != null)
            throw new StockerException(msg);
    }

    public static void isEmpty(CharSequence obj, String msg) {
        if(isBlank(obj))
            throw new StockerException(msg);
//        isTrue(isNotEmpty(array), msg);
    }

    /***
     * 不等于0
     * @param num
     * @param message
     */
    public static void notZero(Integer num, String message) {
        if (num.intValue() != 0)
            throw new StockerException(message);
    }

    /***
     * 不等于1
     * @param num
     * @param message
     */
    public static void notOne(Integer num, String message) {
        if (num.intValue() != 1)
            throw new StockerException(message);
    }


    public static void isZero(Integer num, String message) {
        if (num.intValue() == 0)
            throw new StockerException(message);
    }

    public static void isNotZero(Integer num, String message) {
        if (num.intValue() != 0)
            throw new StockerException(message);
    }

    /***
     * 如果是true 就抛出异常
     * @param expression
     * @param message
     */
    public static void isTrue(boolean expression, String message) {
        if (expression)
            throw new StockerException(message);
    }


    public static void isFalse(boolean expression, String message) {
        if (!expression)
            throw new StockerException(message);
    }

    public static void isTrue(String message) {
        throw new StockerException(message);
    }


    public static void isEquals(Object obj1, Object obj2, String message) {
        if (obj1.equals(obj2))
            throw new StockerException(message);
    }

    public static void notEquals(Object obj1, Object obj2, String message) {
        if (!obj1.equals(obj2))
            throw new StockerException(message);
    }

    /**
     * obj1大于0bj2
     * @param obj1
     * @param obj2
     * @param message
     */
    public static void isGreaterNum(Integer obj1,Integer obj2, String message) {
        if (obj1 > obj2)
            throw new StockerException(message);
    }

    public static boolean isBlank(final CharSequence cs) {

        if (cs == null) {
            return true;
        } else {
            int l = cs.length();
            if (l > 0) {
                for(int i = 0; i < l; ++i) {
                    if (!Character.isWhitespace(cs.charAt(i))) {
                        return false;
                    }
                }
            }

            return true;
        }
    }

}

使用案例:

        Assert.isNull(v,"wrong account or password");//验证是否为空
        Assert.notEquals(v.getPassword(), Md5Utils.encrypt(param.getPassword()),"Wrong account or password");//验证是否相等,验证密码
        Assert.notEquals(v.getState(), Constants.Admin.ADMIN_STATUS_NORMAL,"Your account is blocked!");//验证权限