BaseBean构造

package cn.jsonlu.passguard.model;

import cn.jsonlu.passguard.utils.MD5Util;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Locale;

/**
 * @author JsonLu
 * @email jsonlu@qq.com
 * @since 2016/2/22 19:35
 */
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class BaseModel {

    private String time;
    private String device;
    private String sign;
    private String token;
    private String service;

    public String getService() {
        return service;
    }

    public void setService(String service) {
        this.service = service;
    }


    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getDevice() {
        return device;
    }

    public void setDevice(String device) {
        this.device = device;
    }

    public String getSign() {
        return sign;
    }

    public void setSign(String sign) {
        this.sign = sign;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public void makeSign() {
        setSign(MD5Util.MD5(toString()));
    }

    /**
     * 验签
     *
     * @return
     */
    public boolean verifSign() {
        String trueSign = MD5Util.MD5(toString());
        if (trueSign.equals(sign)) {
            return true;
        }
        System.out.println("签名:" + trueSign);
        return false;
    }

    /**
     * 遍历清空属性值
     */
    public void clear() {
        String[] fields = invokeFieldsName();
        for (int i = 0; i < fields.length; i++) {
            try {
                invokeMethod(this, fields[i]);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 清空属性值
     *
     * @param owner
     * @param fieldName
     * @throws Exception
     */
    public void invokeMethod(Object owner, String fieldName) throws Exception {
        Class<? extends Object> ownerClass = owner.getClass();
        String methodName = fieldName.substring(0, 1).toUpperCase(Locale.getDefault()) + fieldName.substring(1);
        Method method = ownerClass.getMethod("set" + methodName, String.class);
        String str = new String();
        str = null;
        //此处不能直接放null,否则报错
        method.invoke(owner, str);
    }

    /**
     * 获取属性名称列表
     *
     * @return
     */
    public String[] invokeFieldsName() {
        Field[] superFields = getClass().getSuperclass().getDeclaredFields();
        Field[] fields = getClass().getDeclaredFields();
        String[] fieldsName = new String[superFields.length + fields.length];
        for (int i = 0; i < superFields.length; i++) {
            fieldsName[i] = superFields[i].getName();
        }
        for (int i = 0; i < fields.length; i++) {
            fieldsName[superFields.length + i] = fields[i].getName();
        }
        Arrays.sort(fieldsName);
        return fieldsName;
    }

    /**
     * 获取属性值
     *
     * @param owner
     * @param fieldName
     * @param args
     * @return
     * @throws Exception
     */
    public Object invokeMethod(Object owner, String fieldName, Object[] args) throws Exception {
        Class<? extends Object> ownerClass = owner.getClass();
        String methodName = fieldName.substring(0, 1).toUpperCase(Locale.getDefault()) + fieldName.substring(1);
        Method method = ownerClass.getMethod("get" + methodName);
        return method.invoke(owner);
    }

    /**
     * 转换为device=00-787-88855-6644&sign=45555格式
     *
     * @return
     */
    @Override
    public String toString() {
        String[] fields = invokeFieldsName();
        StringBuffer buffer = new StringBuffer();
        for (int i = 0; i < fields.length; i++) {
            if ("sign".equals(fields[i])) {
                continue;
            }
            Object value = null;
            try {
                value = invokeMethod(this, fields[i], null);
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (null != value && !"".equals(value.toString())) {
                buffer.append(fields[i] + "=" + value + "&");
            }
        }
        if (buffer.length() == 0)
            return null;
        if (buffer.lastIndexOf("&") == (buffer.length() - 1)) {
            buffer.setLength(buffer.length() - 1);
        }
        System.out.println("params source is : " + buffer.toString());
        return buffer.toString();
    }
}
原文地址:https://www.cnblogs.com/Jsonlu/p/5211920.html