欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-12 20:53:41
...

public class Utils {

/**

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

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

* @param src

* @param target

*/

public static Object 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) {

 

}

}

}

return target;

}

/**

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

* @param src

* @param target

* @param targetClass

* @return

*/

@SuppressWarnings("unchecked")

public static <S,T> List<T> populateList(List<S> src,List<T> target,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;//某个方法反射异常

}

return target;

}

}