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


    package com.example.demo.utils;
    
    import java.lang.reflect.Method;
    import java.util.List;
    
    import com.example.demo.domain.Users;
    import com.example.demo.model.UsersModel;
    
    public class Dto2Entity {
    
        /**
         * 
         * 将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;
    
        }
        
        public static void main(String[] args) {
            Users users = new Users();
            users.setId(1);
            users.setUsername("huang");
            users.setPassword("123456");
            UsersModel usersModel = new UsersModel();
            usersModel = (UsersModel) Dto2Entity.populate(users,usersModel);
            System.out.println(usersModel.toString());
        }
    
    }
  • 相关阅读:
    Eclipse安装反编译插件
    关于eclipse发送到桌面快捷方式后打不开
    字符串 242.有效的字符异位词
    栈 503.下一个更大的元素
    eclipse导入jar包
    Java获取当前的时间
    链表 24.两两交换链表中的节点
    链表 19.删除链表倒数第N个节点
    共享空间的栈
    栈的顺序存储结构
  • 原文地址:https://www.cnblogs.com/huangjinyong/p/9301497.html
Copyright © 2020-2023  润新知