package com.xzl.common.util;
import com.xzl.common.exception.ParamException;
import org.springframework.beans.BeanUtils;
import java.lang.reflect.Field;
/**
* @description 利用反射,将更新的对象的值进行比对存入
* @since 0:14 2018/10/25
*/
public class CopyUtils {
/**
* @param target 需要设置的对象
* @param source 新值对象
* @param <T> 对象类型
* @param <V> 对象类型
* @throws IllegalAccessException
* @description 对对象的属性进行拷贝
*/
public static <T, V> void copy(T target, V source) throws IllegalAccessException {
// 得到参数的字段
Field[] sourceFields = source.getClass().getDeclaredFields();
// 待保存的目标字段
Field[] targetFields = target.getClass().getDeclaredFields();
dealReflect((V) source, (T) target, sourceFields, targetFields);
}
/**
* @param target 需要设置的对象
* @param source 新值对象
* @param <T> 对象类型
* @param <V> 对象类型
* @throws IllegalAccessException
* @description 对对象的属性进行拷贝
*/
public static <T, V> void copyProperties(V source, T target) throws IllegalAccessException {
// 得到参数的字段
Field[] sourceFields = source.getClass().getDeclaredFields();
// 待保存的目标字段
Field[] targetFields = target.getClass().getDeclaredFields();
dealReflect((V) source, (T) target, sourceFields, targetFields);
}
private static <T, V> void dealReflect(V source, T target, Field[] sourceFields, Field[] targetFields) throws IllegalAccessException {
for (Field field : sourceFields) {
field.setAccessible(true);
Object value = field.get(source);
if (value != null) {
// 表示有值,那么需要将值写入到t对象中
for (Field target1 : targetFields) {
target1.setAccessible(true);
if (!"serialVersionUID".equalsIgnoreCase(target1.getName()) && target1.getName().equals(field.getName())) {
// 表示为同一个字段,那么需要对目标进行赋值
target1.set(target, value);
}
}
}
}
}
/**
* @param source 源对象
* @param target 目标对象
* @return V 目标对象
* @author leihfei
* @description 对象属性的拷贝
* @since 11:19 2018/10/30
* @email: leihfein@gmail.com
*/
public static <T, V> V beanCopy(T source, V target) {
if (source == null || target == null) {
return null;
}
BeanUtils.copyProperties(source, target);
return target;
}
/**
* @param target 需要设置的对象
* @param source 新值对象
* @param <T> 对象类型
* @param <V> 对象类型
* @throws IllegalAccessException
* @description 对对象的属性进行拷贝
*/
public static <T, V> void copyProperties2(V source, T target) {
// 得到参数的字段
Field[] sourceFields = source.getClass().getDeclaredFields();
// 待保存的目标字段
Field[] targetFields = target.getClass().getDeclaredFields();
try {
dealReflect((V) source, (T) target, sourceFields, targetFields);
} catch (IllegalAccessException e) {
throw new ParamException("对象拷贝异常");
}
}
public static <T> T get(Class<T> clz, Object o) {
if (clz.isInstance(o)) {
return clz.cast(o);
}
return null;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
data_trans_server.rar (71个子文件)
data_trans_wengfu_server
pom.xml 7KB
src
main
resources
mapper
mysql
WengfuWeighRecord.xml 2KB
mysqlXs
WengfuWeighRecordXs.xml 2KB
sqlserver
JBB.xml 492B
application.properties 353B
application.yml 1KB
java
com
xzl
TransferServerApplication.java 1KB
mapper
mysql
WengfuWeighRecordMapper.java 275B
mysqlXs
WengfuWeighRecordXsMapper.java 285B
sqlserver
JBBMapper.java 241B
configuration
SqlServerDataSourceConfig.java 3KB
MultipartConfig.java 2KB
MysqlDataSourceConfig.java 2KB
SwaggerConfig.java 1KB
MysqlXsDataSourceConfig.java 2KB
controller
service
common
response
SetResponse.java 1KB
SuccessResponse.java 769B
ListResponse.java 1KB
Response.java 311B
ResponseEnum.java 661B
ObjectResponse.java 2KB
FailedResponse.java 787B
ResponseResult.java 242B
exception
RequestHandleException.java 726B
PermissionException.java 709B
WarnException.java 679B
FaileResponseException.java 741B
ResourcesException.java 708B
ParamException.java 683B
util
UUIdGenId.java 457B
CopyUtils.java 4KB
JsonUtils.java 1KB
model
entity
mysql
WengfuWeighRecord.java 2KB
mysqlXs
WengfuWeighRecordXs.java 2KB
sqlserver
JBB.java 441B
target
classes
mapper
mysql
WengfuWeighRecord.xml 2KB
mysqlXs
WengfuWeighRecordXs.xml 2KB
sqlserver
JBB.xml 492B
application.properties 353B
application.yml 1KB
META-INF
data_trans_wengfu_server.kotlin_module 16B
com
xzl
mapper
mysql
WengfuWeighRecordMapper.class 395B
mysqlXs
WengfuWeighRecordXsMapper.class 405B
sqlserver
JBBMapper.class 361B
configuration
MultipartConfig.class 2KB
SqlServerDataSourceConfig.class 3KB
MysqlDataSourceConfig.class 3KB
MysqlXsDataSourceConfig.class 3KB
SwaggerConfig.class 2KB
TransferServerApplication.class 1KB
common
response
SetResponse.class 2KB
ResponseEnum.class 2KB
FailedResponse.class 1KB
ResponseResult.class 2KB
Response.class 209B
SuccessResponse.class 919B
ObjectResponse.class 3KB
ListResponse.class 2KB
exception
FaileResponseException.class 1KB
ParamException.class 1KB
RequestHandleException.class 1KB
ResourcesException.class 1KB
PermissionException.class 1KB
WarnException.class 1KB
util
CopyUtils.class 3KB
UUIdGenId.class 1KB
JsonUtils.class 2KB
model
entity
mysql
WengfuWeighRecord.class 12KB
mysqlXs
WengfuWeighRecordXs.class 12KB
sqlserver
JBB.class 2KB
generated-sources
annotations
data_trans_wengfu_server.iml 12KB
共 71 条
- 1
资源评论
Lovme_du
- 粉丝: 116
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功