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