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());
} }
java 使用反射在dto和entity 实体类之间进行转换的更多相关文章
- (转)DataTable与结构不同实体类之间的转换
原文地址:http://www.cnblogs.com/kinger906/p/3428855.html 在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我 ...
- DataTable与结构不同实体类之间的转换
在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我们怎么处理呢?可能有人会说,在转换时创建一个实体对象,对表里的数据逐行遍历来实例化这个实体对象不就完了.的 ...
- DataTable和实体类之间的转换
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...
- (转)DATATABLE(DATASET)与实体类之间的互转.
转自:http://www.cnblogs.com/zzyyll2/archive/2010/07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类 代 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
在Spring 集成 Hibernate 的JPA方式中,需要在persistence配置文件中定义每一个实体类,这样非常地不方便,远哥目前找到了2种方法. 这2种方式都可以实现不用persist ...
- 实体类与实体DTO类之间的转换
实体类与实体DTO类之间的转换 实体类与实体DTO类之间的转换 1.通过使用第三方序列化反序列化工具Newtonsoft.Json 2.通过反射实现 3.通过表达式目录树加字典缓存实现 4. 通过表达 ...
- EasyCode Entity 实体类模板 IDEA
自己修改了一份EasyCode的实体类模板,防止日后找不到在这里存一下 修改了如下内容: 取消生成GetSet方法,改用Lombok 修改默认命名规则,改为[表名Entity.java] 取消了实现序 ...
- XML文件与实体类的互相转换
XML文件与实体类的互相转换 一.将XML文件反序列化为实体类对象 1. 通常程序的配置信息都保存在程序或者网站的专门的配置文件中(App.config/web.config).但是现在为了演示XML ...
随机推荐
- Bootstrap的响应式后台管理模板推荐
1.Admin LTE 该模版开源免费.已用到项目中,客户评价说UI很好看... AdminLTE - 是一个完全响应式管理模板.基于Bootstrap3的框架.高度可定制的,易于使用.支持很多的屏幕 ...
- 图片压缩之-JPEGCodec失效替换方案
今天遇到一个405错误,提示Method not allowed ,一直以为是控制器出问题了,后来发现实际上是Jpeg库有问题.刚开始用这个库,没想到已经不推荐使用了.下面是网上找的解决方案.http ...
- Mongodb 备份 数据导出导入
MongoDB 客户端工具 mongochef 可以进行一系类操作 MongoDB 非客户端操作 : mongod 备份导出 mongoexport -h IP --port 端口 -u 用户名 -p ...
- POJ1251 Jungle Roads【最小生成树】
题意: 首先给你一个图,需要你求出最小生成树,首先输入n个节点,用大写字母表示各节点,接着说有几个点和它相连,然后给出节点与节点之间的权值.拿第二个样例举例:比如有3个节点,然后接下来有3-1行表示了 ...
- 【转贴】Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
原文地址; http://www.ha97.com/5359.html PS:昨天一同事遇到mysql 5.5中文乱码问题,找我解决.解决了,有个细节问题网上没人说,我就总结一下. 一.登录MySQL ...
- mysql 原理 ~ binlog
一 简介:我们会持续对binlog进行分析,但是不深入代码二 版本 5.6 格式 GTID和传统格式 传统格式 一 binlog针对具体事务注意点-1 1 u ...
- 关于django1.7.7使用ajax后出现“CSRF token missing or incorrect”问题的解决办法
最近使用Python3.3.25和django1.7.7开发公司项目,在使用ajax来post数据时,居然一直提示:403错误,原因是“CSRF token missing or incorrect” ...
- Python 爬虫学习
#coding:utf-8 #author:Blood_Zero ''' 1.获取网页信息 2.解决编码问题,通过charset库(默认不安装这个库文件) ''' import urllib impo ...
- nginx入门一
配置文件: server_name user root; worker_processes 2; error_log logs/error-test.log; #pid logs/nginx.pid; ...
- 腾讯云外网IP直通后,遇到网络问题
通过内网机器,先重启网卡 service network restart cd /usr/local/etc ./modify_route.sh