用properties配置文件将VO转化为DTO
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类