浅拷贝工具类,快速将实体类属性值复制给VO
/**
* 浅拷贝的工具类
*/
public class PropertiesUtil { /**
* 两个类,属性名一样的元素,复制成员。
*/
public static void copy(Object source,Object target){
Class<?> sourceClass=source.getClass();
Class<?> targetClass=target.getClass();
Field [] sourceFields=sourceClass.getDeclaredFields();
//遍历成员
for (int i = 0; i < sourceFields.length; i++) {
//获取第i个元素
Field field=sourceFields[i];
//设置可见性
field.setAccessible(true);
//拿到成员名
String name = field.getName();
Field targetField=null;
try {
targetField = targetClass.getDeclaredField(name);
} catch (NoSuchFieldException e) {
//e.printStackTrace();
continue;
}
//复制属性的值
targetField.setAccessible(true);
try {
targetField.set(target,field.get(source));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} /**
* 两个类,属性名一样的元素,复制成员。
*/
public static <T> T copy(Object source,Class<T> targetClass){
Class<?> sourceClass=source.getClass();
T target= null;
try {
target = targetClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Field [] sourceFields=sourceClass.getDeclaredFields();
//遍历成员
for (int i = 0; i < sourceFields.length; i++) {
//获取第i个元素
Field field=sourceFields[i];
//设置可见性
field.setAccessible(true);
//拿到成员名
String name = field.getName();
Field targetField=null;
try {
targetField = targetClass.getDeclaredField(name);
} catch (NoSuchFieldException e) {
//e.printStackTrace();
continue;
}
//复制属性的值
targetField.setAccessible(true);
try {
targetField.set(target,field.get(source));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return target;
}
// public static void main(String[] args) {
// UserVO user1=new UserVO();
// UserVO user2=new UserVO();
// user1.setId(1L);
// user1.setUsername("zhangsan");
// copy(user1,user2);
// System.out.println(user2);
// } }
浅拷贝工具类,快速将实体类属性值复制给VO的更多相关文章
- mybatis-generator-core快速生成实体类和Mapper
日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...
- Idea的类中使用实体类(有@Data注解)的Get/Set方法报错
今天从svn上面下了一个maven项目,导入到Idea中之后,发现有的类会使用实体类的Set/Get方法(全报错),导致该问题的原因就是因为实体类中没有这个方法,代码类似如下: @Data publi ...
- powerdesigner 使用技巧 建模工具 导出sql 导出实体类 导出word
显示comment列 Table Properties(表属性)=>Columns(列)=>Customize Columns and Filter(自定义列过滤) 勾上 comment ...
- 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法
由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...
- WPF——传实体类及绑定实体类属性
public class User: private string _User; public string User1 { get { return _User; } set { _User = v ...
- xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil
若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...
- fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配
一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...
- idea快速生成实体类
1.打开idea的视图,选择Database 2.选择对应的数据库[这里是mysql为例] 3.输入自己对应的内容,输入完成可点击Test Connection进行测试,成功SUCCESS 4.点击确 ...
- [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较
转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...
随机推荐
- BitBlt()函数实现带数字百分比进度条控件、静态文本(STATIC)控件实现的位图进度条、自定义进度条控件实现七彩虹颜色带数字百分比
Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows AP ...
- java类的学习
什么是类: 类=属性+方法 属性来源于状态(以变量的形式存在):方法来源于动作: *属性对应的是数据,而数据只能存在变量中. 方法内的变量为局部变量:类体中的变量称为成员变量(也称为属性) java中 ...
- 基于slate构建文档编辑器
基于slate构建文档编辑器 slate.js是一个完全可定制的框架,用于构建富文本编辑器,在这里我们使用slate.js构建专注于文档编辑的富文本编辑器. 描述 Github | Editor DE ...
- UiPath Orchestrator安装步骤
UiPath Orchestrator安装步骤 答案在这 https://rpazj.com/thread-219-1-1.html
- 【python基础】第01回 计算机基础1
本章内容概要 1.文件路径2.typora主要功能介绍3.typora语法学习(markdown)4.计算机的本质5.计算机五大组成部分6.网络博文编写教程 本章内容详解 1.文件路径 --路径:可以 ...
- docker安装报错failure: repodata/repomd.xml from mirrors.aliyun.com_docker-ce_linux_centos_docker-ce.pro
1.进入 /etc/yum.repos.d 目录下,将所有有关 docker 的 repo 全部删掉 2.重新添加镜像 sudo yum-config-manager --add-repo https ...
- Pytorch Dataloader加速
在进行多卡训练的时候,经常会出现GPU利用率上不来的情况,无法发挥硬件的最大实力. 造成这种现象最有可能的原因是,CPU生成数据的能力,已经跟不上GPU处理数据的能力. 方法一 常见的方法为修改Dat ...
- 类似Tower的而故事还没结束
我对于SaaS一种有一种英雄主义的情怀在里面,无论是早期的推事本,还是后面我去调研的麦客CRM,国内的SaaS都在努力生长,在后疫情时代剩下的都是平台级的钉钉.飞书,或者垂直领域的王炸app了. 我早 ...
- 聊聊 C++ 中的四种类型转换符
一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main() { void* p ...
- jdbc 05: 查询结果集
jdbc连接mysql,查询结果集 package com.examples.jdbc.o5_结果集查询; import java.sql.*; import java.util.ResourceBu ...