java entity转dto_java 使用反射在dto和entity 实体类之间进行转换

该博客介绍了一个Java工具类`Dto2Entity`,用于通过反射将DTO(Data Transfer Object)对象的属性值复制到Entity实体类中。方法包括单个对象的转换和对象集合的批量转换。在转换过程中,注意了属性名称的匹配和处理可能出现的反射异常情况。通过示例展示了如何使用该工具类将`Users`实体转换为`UsersModel` DTO。

packagecom.example.demo.utils;importjava.lang.reflect.Method;importjava.util.List;importcom.example.demo.domain.Users;importcom.example.demo.model.UsersModel;public classDto2Entity {/***

* 将dto和entity之间的属性互相转换,dto中属性一般为String等基本类型,

*

* 但是entity中可能有复合主键等复杂类型,需要注意同名问题

*

*@paramsrc

*

*@paramtarget*/

public staticObject populate(Object src, Object target) {

Method[] srcMethods=src.getClass().getMethods();

Method[] targetMethods=target.getClass().getMethods();for(Method m : srcMethods) {

String srcName=m.getName();if (srcName.startsWith("get")) {try{

Object result=m.invoke(src);for(Method mm : targetMethods) {

String targetName=mm.getName();if (targetName.startsWith("set")&& targetName.substring(3, targetName.length())

.equals(srcName.substring(3, srcName.length()))) {

mm.invoke(target, result);

}

}

}catch(Exception e) {

}

}

}returntarget;

}/***

* dto集合和实体类集合间的互相属性映射

*

*@paramsrc

*

*@paramtarget

*

*@paramtargetClass

*

*@return

*/@SuppressWarnings("unchecked")public static List populateList(List src, Listtarget,

Class>targetClass) {for (int i = 0; i < src.size(); i++) {try{

Object object=targetClass.newInstance();

target.add((T) object);

populate(src.get(i), object);

}catch(Exception e) {continue;//某个方法反射异常

}

}returntarget;

}public static voidmain(String[] args) {

Users users= newUsers();

users.setId(1);

users.setUsername("huang");

users.setPassword("123456");

UsersModel usersModel= newUsersModel();

usersModel=(UsersModel) Dto2Entity.populate(users,usersModel);

System.out.println(usersModel.toString());

}

}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值