获取Dto对象中的注解、属性名、属性类型、属性值


获取Dto对象中的注解、属性名、属性类型、属性值

package net.qmgf.proj.wbmining.common.util;

import io.swagger.annotations.ApiModelProperty;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import net.qmgf.frame.common.base.model.BaseEntityDto;

import org.apache.commons.lang3.StringUtils;

/**
 * service层通用方法
 *
 * @author He
 * @version V1.0
 * @date 2020年7月3日
 */
public class ServiceUtil {

	/**
	 * 
	 * @author He
	 * @date 2020年7月3日
	 * @version 1.0
	 *
	 * @param dto
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static String getDtoInfo(BaseEntityDto dto, Class clazz) {

		String ret = "";

		Field[] declaredFields = clazz.getDeclaredFields();
		for (Field field : declaredFields) {
			String name = field.getName();
			String type = field.getType().toString();
			String value = String.valueOf(getFieldValueByName(field.getName(), dto));

			// System.out.println(field.getName());
			// System.out.println(getFieldValueByName(field.getName(), dto));
			// System.out.println(field.getType().toString());

			// Annotation[] annotations = field.getAnnotations(); // 获取所有的注解
			ApiModelProperty api = field.getDeclaredAnnotation(ApiModelProperty.class); // 获取指定的注解
			if (api != null && StringUtils.isNotEmpty(api.value())) {
				// System.out.println(api.value());
				ret += api.value() + ":" + value + ";";
			}
		}
		return ret;

	}

	/**
	 * Dto比较
	 * 
	 * @author He
	 * @date 2020年7月3日
	 * @version 1.0
	 *
	 * @param srcDto
	 *            修改前
	 * @param targetDto
	 *            修改后
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static String getDtoCompare(BaseEntityDto srcDto, BaseEntityDto targetDto, Class clazz) {

		String ret = "";
		Field[] declaredFields = clazz.getDeclaredFields();
		for (Field field : declaredFields) {
			String name = field.getName();
			String type = field.getType().toString();
			String srcValue = String.valueOf(getFieldValueByName(field.getName(), srcDto));
			String targetValue = String.valueOf(getFieldValueByName(field.getName(), targetDto));

			ApiModelProperty api = field.getDeclaredAnnotation(ApiModelProperty.class); // 获取指定的注解
			if (api != null && StringUtils.isNotEmpty(api.value())) {
				if (!StringUtils.equals(srcValue, targetValue)) {
					ret += api.value() + ":" + srcValue + "->" + targetValue + ";";
				}
			}
		}
		return ret;

	}

	/**
	 * 根据属性名获取属性值
	 * 
	 * @author He
	 * @date 2020年7月3日
	 * @version 1.0
	 *
	 * @param fieldName
	 * @param o
	 * @return
	 */
	public static Object getFieldValueByName(String fieldName, Object o) {
		try {
			String firstLetter = fieldName.substring(0, 1).toUpperCase();
			String getter = "get" + firstLetter + fieldName.substring(1);
			Method method = o.getClass().getMethod(getter, new Class[] {});
			Object value = method.invoke(o, new Object[] {});
			return value;
		} catch (Exception e) {
			// log.error(e.getMessage(),e);
			return null;
		}
	}

}


BaseEntityDto

package net.qmgf.frame.common.base.model;


import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;


/**
 * @author 
 * @version V1.0
 * @Package net.qmgf.frame.common.base.model
 * @Description: 所有根据Entity生成的DTO
 * @date 2017 /3/10 14:33
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ToString
public class BaseEntityDto extends BaseDto {

    private String id;

    /**
     * 版本号
     */

    private Integer versionNum;
    /**
     * 逻辑删除标识
     */

    private String deleteFlag;

    /**
     * 创建者
     */
    protected String createUser;

    /**
     * 创建日期
     */

    protected Date createDate;

    /**
     * 更新者
     */
    protected String updateUser;

    /**
     * 更新日期
     */
    protected Date updateDate;

}

Dto

package

net.qmgf.proj.wbmining.base.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import net.qmgf.frame.common.base.model.BaseEntityDto;

/**
 * 基础数据系统日志
 * @author He
 * @date 2020年7月7日  
 * @version 1.0  
 *
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value = "")
public class BaseLogDto extends BaseEntityDto {

	private static final long serialVersionUID = 1L;

	/**
	 * 日志内容
	 */
	@ApiModelProperty(value = "日志内容")
	private String content;
	/**
	 * 模块类型
	 */
	@ApiModelProperty(value = "模块类型")
	private String moduleType;
	/**
	 * 操作类型
	 */
	@ApiModelProperty(value = "操作类型")
	private String operateType;

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM