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

这个Java类展示了如何使用反射来实现DTO(Data Transfer Object)与Entity对象之间的属性转换。当DTO通常包含基本类型而Entity可能有复杂类型时,该方法处理了属性映射,包括集合间的映射。示例中,`Dto2Entity`类提供了两个静态方法,一个用于单个对象的转换,另一个用于对象集合的转换,并在main方法中进行了演示。
摘要由CSDN通过智能技术生成

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());

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值