关闭

spring-两个对象之间的属性拷贝工具

829人阅读 评论(0) 收藏 举报
分类:
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));
        }


    }
}
0
0
查看评论

spring的BeanUtils.copyProperties用法

一、简介: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。 二、用法: B...
  • shimiso
  • shimiso
  • 2010-06-03 13:43
  • 49351

Spring BeanUtils.copyProperties和apache commons-beanutils

from:http://blog.csdn.net/Victor_Cindy1/article/details/52450278 业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃...
  • u010084868
  • u010084868
  • 2016-09-23 17:24
  • 2056

对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

功能简介   对象拷贝的应用现状简介: 业务系统中经常需要两个对象进行属性的拷贝,不能否认逐个的对象拷贝是最快速最安全的做法,但是当数据对象的属性字段数量超过程序员的容忍的程度,代码因此变得臃肿不堪,使用一些方便的对象拷贝工具类将是很好的选择。 目前流行的较为公用认...
  • jianhua0902
  • jianhua0902
  • 2012-11-06 22:18
  • 31483

Spring 的BeanUtils.copyProperties在拷贝属性时忽略空值

最近在写一个小玩意的时候,需要在两个对象之间拷贝属性 使用的是 BeanUtils.copyProperties 可是,有一个问题 就是当src对象的键值为Null时 就会把target对象的对应键值覆盖成空了 这不科学 所以找了下面的这个方式来解决 public stati...
  • u010186511
  • u010186511
  • 2016-06-06 15:22
  • 11231

对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp37    对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀  性能对比: BeanCo...
  • yemou_blog
  • yemou_blog
  • 2015-12-14 11:15
  • 1673

spring的BeanUtils.copyProperties(obj1, obj2);复制对象时字段类型不一致,导致赋值不上

当用spring的BeanUtils.copyProperties(obj1, obj2);对象进行复制时,因为在obj1 类型的对象中定义的属性类型不同(set方法中用的是Integer类型,get方法中返回的是int类型):   public int getNumber() { ...
  • mingtianhaiyouwo
  • mingtianhaiyouwo
  • 2015-11-07 15:25
  • 3226

Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier)

比较的是四种复制的方式,分别为Apache的BeanUtils和PropertyUtils,Spring的BeanUtils,Cglib的BeanCopier。做法是在Eclipse新建了一个Project,专门用于专门测试几种代码的性能。具体的代码如下:      ...
  • z69183787
  • z69183787
  • 2015-02-14 21:04
  • 3883

两个具有相同属性的对象之间属性的拷贝

在处理业务逻辑时,偶尔会有这样的需求:对象A已经实例化,但是有一些格式上的不符合标准,对象B没有具体的属性值但是格式却符合标准。 一般这样的情况会出现在DTO对象与VO对象之间。DTO需要实现序列化才可以传输。 这时候就需要对象属性的拷贝:public static void copyPrope...
  • amanicspater
  • amanicspater
  • 2017-06-07 18:41
  • 443

Spring的BeanUtils.copyProperties用法

一、简介: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。 二、用法...
  • aya19880214
  • aya19880214
  • 2016-01-20 18:51
  • 1014

java 对象之间属性值复制

java对象之间属性值复制在许多开源框架中也有实现,在这里介绍下自己的实现、apache commons-beanutils、Spring三种方式实现。 1 自己实现。采用反射,通过源对象getter 方法获取属性值,并通过目标对象的setter方法设置到目标对象中去。没有考虑太多性能,如果需要批...
  • einarzhang
  • einarzhang
  • 2012-07-28 13:12
  • 35815
    个人资料
    • 访问:38466次
    • 积分:689
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:37篇
    • 译文:0篇
    • 评论:4条
    最新评论