spring-两个对象之间的属性拷贝工具
2016-05-31 10:17
435 查看
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
public class PropertiesCopyUtil {
/**
* 属性复制
*
* @param source
* @param clazz
* @return
*/
public static <T> T copyProperties(Object source, Class<T> clazz) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target);
return target;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 忽略部分属性
*
* @param source
* @param clazz
* @param ignoreProperties
* @return
*/
public static <T> T copyPropertiesIgnore(Object source, Class<T> clazz,
String... ignoreProperties) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target, ignoreProperties);
return target;
} catch (Exception e) {
}
return null;
}
/**
* 复制部分属性
*
* @param source
* @param clazz
* @param specificProperties
* @return
*/
public static <T> T copyPropertiesSpecific(Object source, Class<T> clazz,
String... specificProperties) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
if (specificProperties == null) {
return target;
}
List<String> specificList = Arrays.asList(specificProperties);
copySpecificProperties(source, target, specificList);
return target;
} catch (Exception e) {
}
return null;
}
private static void copySpecificProperties(final Object source,
final Object target, final Iterable<String> properties) {
final BeanWrapper src = new BeanWrapperImpl(source);
final BeanWrapper trg = new BeanWrapperImpl(target);
for (final String propertyName : properties) {
trg.setPropertyValue(propertyName,
src.getPropertyValue(propertyName));
}
}
}
import java.util.List;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
public class PropertiesCopyUtil {
/**
* 属性复制
*
* @param source
* @param clazz
* @return
*/
public static <T> T copyProperties(Object source, Class<T> clazz) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target);
return target;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 忽略部分属性
*
* @param source
* @param clazz
* @param ignoreProperties
* @return
*/
public static <T> T copyPropertiesIgnore(Object source, Class<T> clazz,
String... ignoreProperties) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
BeanUtils.copyProperties(source, target, ignoreProperties);
return target;
} catch (Exception e) {
}
return null;
}
/**
* 复制部分属性
*
* @param source
* @param clazz
* @param specificProperties
* @return
*/
public static <T> T copyPropertiesSpecific(Object source, Class<T> clazz,
String... specificProperties) {
if (source == null) {
return null;
}
try {
T target = BeanUtils.instantiate(clazz);
if (specificProperties == null) {
return target;
}
List<String> specificList = Arrays.asList(specificProperties);
copySpecificProperties(source, target, specificList);
return target;
} catch (Exception e) {
}
return null;
}
private static void copySpecificProperties(final Object source,
final Object target, final Iterable<String> properties) {
final BeanWrapper src = new BeanWrapperImpl(source);
final BeanWrapper trg = new BeanWrapperImpl(target);
for (final String propertyName : properties) {
trg.setPropertyValue(propertyName,
src.getPropertyValue(propertyName));
}
}
}
相关文章推荐
- SpringMVC @ResponseBody 415错误处理
- java mail 带附件
- java mail
- java static
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
- SpringMVC之绑定参数的类型转换(Date/Double)
- 如何在Eclipse下查看JDK源代码
- Spring IOC容器
- eclipse中禁用JS验证
- 学习总结 java Iterator迭代器练习
- eclipse中导入jar包的源码
- Java_equals和“==”的区别
- [Java] Java 中的进程与线程
- eclipse/jetty插件端口修改
- java 构造方法与静态的加载
- 回调函数、Java接口回调 总结
- Java中 Class.getSimpleName()的作用
- java.lang.NoClassDefFoundError: javax/el/ExpressionFactor weblogic10
- Java线程
- extjs ajax请求与struts2进行交互