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

java 使用反射在dto和entity 实体类之间进行转换的更多相关文章

  1. (转)DataTable与结构不同实体类之间的转换

    原文地址:http://www.cnblogs.com/kinger906/p/3428855.html 在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我 ...

  2. DataTable与结构不同实体类之间的转换

    在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我们怎么处理呢?可能有人会说,在转换时创建一个实体对象,对表里的数据逐行遍历来实例化这个实体对象不就完了.的 ...

  3. DataTable和实体类之间的转换

    using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...

  4. (转)DATATABLE(DATASET)与实体类之间的互转.

    转自:http://www.cnblogs.com/zzyyll2/archive/2010/07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类  代 ...

  5. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

  6. JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法

    在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法.   这2种方式都可以实现不用persist ...

  7. 实体类与实体DTO类之间的转换

    实体类与实体DTO类之间的转换 实体类与实体DTO类之间的转换 1.通过使用第三方序列化反序列化工具Newtonsoft.Json 2.通过反射实现 3.通过表达式目录树加字典缓存实现 4. 通过表达 ...

  8. EasyCode Entity 实体类模板 IDEA

    自己修改了一份EasyCode的实体类模板,防止日后找不到在这里存一下 修改了如下内容: 取消生成GetSet方法,改用Lombok 修改默认命名规则,改为[表名Entity.java] 取消了实现序 ...

  9. XML文件与实体类的互相转换

    XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...

随机推荐

  1. CodeForces - 615D Multipliers(数论)

    http://codeforces.com/problemset/problem/615/D 题意 给出m个质因子,组成一个数n.问n的约数的乘积是多少,输出mod 1e+7的结果. 分析 从输入我们 ...

  2. XML文件详解以及解析

    转自:https://blog.csdn.net/com_ma/article/details/73277535 一.xml基础详解: 1.概述: xml:即可扩展标记语言,xml是互联网数据传输的重 ...

  3. Mysql高级查询 内连接和外连接详解

    一.内连接(INNER JOIN) 1.等值连接 概述:指使用等号"="比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录. 语法: SELECT 列 FRO ...

  4. OracleHelper与SqlServerHelper

    1.OracleHelper using System; using System.Data; using System.Configuration; using System.Linq; using ...

  5. 旋钮QDial

    样式: import sys from PyQt5.QtGui import QFont from PyQt5.QtWidgets import QApplication, QWidget, QDia ...

  6. js计算数字长度

    js调用toString方法转为字符串后取长度 var num = 123; alert(num.toString().length);

  7. 安卓中location.href或者location.reload 不起作用

    链接:https://www.cnblogs.com/joshua317/p/6163471.html 在移动wap中,经常会使用window.location.href去跳转页面,这个方法在绝大多数 ...

  8. 第17月第7天 iOS 数组越界,防Crash处理

    1. 上面方法已经可以避免crash,为了避免冗余的代码,写一个NSArray的分类,利用runtime替换NSArray的对象方法objectAtIndex:,在这里进行判断,捕获异常: #impo ...

  9. Latex graphicx 宏包 scalebox命令

    scalebox  命令需要加载  \usepackage{graphicx} \scalebox{水平缩放因子}[垂直缩放因子]{对象} \scalebox 命令对其作用的对象进行缩放,使缩放后的对 ...

  10. K中心点算法之PAM

    一.PAM聚类算法:         选用簇中位置最中心的对象,试图对n个对象给出k个划分:代表对象也被称为是中心点,其他对象则被称为非代表对象:最初随机选择k个对象作为中心点,该算法反复地用非代表对 ...