java工具类
将VO和DTO之间的转化,使用配置文件,而非使用get和set
下面是java的工具类:
package com.mrjt.common.framework.common.utils; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.util.List; /** * 描述:DTO和VO转换工具类 * * @author: zhoucc * @date: 2019/8/21 19:23 * @since JDK1.8 */ public class DataTransferUtil { public static void copyProperties(String fileName, Object source, Object dest) { try { // 获取属性 BeanInfo sourceBean = Introspector.getBeanInfo(source.getClass(), Object.class); PropertyDescriptor[] sourceProperty = sourceBean.getPropertyDescriptors(); BeanInfo destBean = Introspector.getBeanInfo(dest.getClass(), Object.class); PropertyDescriptor[] destProperty = destBean.getPropertyDescriptors(); // 获取配置文件中所有的key List<String> allKeys = PropertiesUtils.getAllKeys(fileName); for (String key : allKeys) { for (String item : PropertiesUtils.readKeyValue(fileName, key).split(",")) { for (int j = 0; j < destProperty.length; j++) { if (item.equals(destProperty[j].getName())) { for (int i = 0; i < sourceProperty.length; i++) { if (key.equals(sourceProperty[i].getName())) { destProperty[j].getWriteMethod().invoke(dest, sourceProperty[i].getReadMethod().invoke(source)); break; } } } } } } } catch (IntrospectionException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } }
需要增肌配置文件test.properties文件
下面是例子
# 主键 pk_payment=id # 编码 code=code
转化前的pk_payment对应转化后的id
使用方法为
DataTransferUtil.copyProperties("test/test.properties", VO, DTO);
test/test.properties是你的配置文件的路径
VO是你需要转化的VO
DTO是生成的VO