`
clasp
  • 浏览: 54384 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

关于bean间属性拷贝

阅读更多
javaBean间属性拷贝有两种方式。

1.使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean,代码片段见下
    Book srcBook = new Book();
    srcBook.setName("爱你是我的错");
        
    Novel novel= new Novel();//小说具有书的属性。
        
    PropertyUtils.copyProperties(novel, srcBook);
        
    // 输出 
    // 爱你是我的错
    System.out.println(novel.getName());

PropertyUtils.copyProperties()将检索源bean中所有的属性,然后将其值分配给目标bean中相同的属性,如果上面的例子中Book bean有一个author属性,类型是Person,这个方法将分配其的references给destBook,也就是说copyProperties()方法不会克隆属性的值.只是拷贝一个对象在内存中的地址而已,看下面的代码片段

Person author = new Person();
    author.setName("小欧");
        
    Book srcBook = new Book();
    srcBook.setName("爱你是我的错");
    srcBook.setAuthor(author);
        
    Novel novel= new Novel();//小说具有书的属性。
        
    PropertyUtils.copyProperties(novel, srcBook);
        
    // 作者的内存地址一样
    // 作者的内存地址一样
    if (srcBook.getAuthor() == novel.getAuthor()) {
        System.out.println("作者的内存地址一样");
    }

 

copyProperties()方法也能将Map中的内容分酌给bean,如果key同目标bean的属性名相同的话

    Map srcMap = new HashMap();
    srcMap.put("name", "爱你是我的错");
        
    Book destBook = new Book();
        
    PropertyUtils.copyProperties(destBook, srcMap);
    // 输出
    // 爱你是我的错
    System.out.println(destBook.getName());

 

2.Cglib提供了类似的功能,以字节码增强的形式

CSDN中已有一篇(http://blog.csdn.net/pengrg166/archive/2007/01/03/1472842.aspx)过两天再贴上我的案例:

 

分享到:
评论
1 楼 leon.s.kennedy 2012-06-27  
博主您好!

请问struts2前台封装过来的对象,有些属性是null (不让做隐藏域) 这种情况
我后台service层把对象get出来 之后再手动set一个个的修改属性,这样属性多 代码也就多
如果用propertiesUtil对拷属性,则会把null给冲进从DB get出的对象 从而更新时某些属性为null

请教解决方法

相关推荐

    idea插件实现自动set属性拷贝

    Student student=new Student(); (Student2)student //在这个表达式(记得光标在表达式里面哦)按下alt+Enter,选中“哟嚯。。。好爽啊”就能自动生成下面代码 Student2 student2=new Student2();...

    利用annotation完成对象间的属性拷贝

    在Java开发中,对象间的属性拷贝是一个常见的需求,特别是在数据转换、模型绑定或服务调用等场景。本文将深入探讨如何利用注解(Annotation)来实现这一功能,以提高代码的可读性和可维护性。我们将从标题“利用...

    BeanConvertor工具类Java开发Bean转换拷贝工具类

    内容概要:本资源提供了一个Java Bean转换工具类示例,展示了如何使用反射和JSON序列化实现对象之间的属性拷贝。该工具类包含两个主要方法:convertTo和convertByJackson,前者基于反射用于结构相同的对象间的属性...

    拷贝JSON对象值进Java Bean对象

    这段代码利用了反射机制,找到Java Bean类中的setter方法,根据JSON中的键值对调用setter方法设置属性值。 另一种常见的方式是使用Gson库,它的使用更加简洁。首先,引入Gson库,然后使用`Gson.fromJson()`方法进行...

    common(bean_之音属性复制).zip

    标题中的"common(bean_之音属性复制).zip"提到了一个关于Java Bean属性复制的主题,这通常指的是对象间的属性拷贝或者映射过程。在Java开发中,特别是Spring框架中,Bean的属性复制是一个常见操作,它有助于减少...

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

    首先,Apache BeanUtils是Apache Commons项目的一部分,提供了一系列便捷的工具方法用于Bean的操作,包括属性的复制。它使用反射机制实现,通过getter和setter方法进行属性的读写。其优点在于简单易用,但缺点是在...

    java反射以及复制一个bean的值到另一个bean中。

    假设我们有两个 `Person` 类的实例 `person1` 和 `person2`,我们想要将 `person1` 的属性值复制到 `person2`: ```java public static void copyBeanProperties(Object source, Object target) throws ...

    jodd-bean-3.4.5.zip

    Jodd Bean提供了丰富的API,使得我们可以方便地操作Bean的属性,如设置和获取值,以及进行深度的拷贝、映射和验证等操作。例如,你可以使用Jodd Bean来实现对象之间的映射,这在数据转换和JSON序列化/反序列化时非常...

    bean_util_test.zip

    例如,`BeanUtils.copyProperties(sourceBean, targetBean)`可以完成源Bean与目标Bean之间的属性拷贝。 2. **集合转换**:如果需要将一个Bean对象列表转换为另一种类型的Bean对象列表,Bean Util工具类提供了便利的...

    bean,json工具类

    4. **数据拷贝**:这个工具类可能包含了复制Bean对象到另一个相同类型Bean的功能,这通常用于创建Bean对象的副本,避免对原对象的修改影响到其他地方。可以使用如Apache Commons BeanUtils的`copyProperties(Object ...

    bingo-bean:对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型

    bingo-bean对象拷贝,目标是比dozer更快,功能更强大,更完整的支持泛型1、该项目是复制对象的工具,创建目的是:a)、比Dozer、FastJson更快,占用内存更小b)、不同类型间的复制,包括对自定义泛型的深层识别,参见...

    BeanUtilsBean对象复制使用(类型可以自动转化)

    `BeanUtilsBean.copyProperties()`方法是实现此功能的关键,它允许我们将一个JavaBean的所有属性值复制到另一个具有相同属性的JavaBean中。 `BeanUtilsBean`的`copyProperties()`方法的工作原理如下: 1. **目标与...

    拷贝别人的struts总结

    ##### 显示Bean属性 - **<bean:write>标记**:此标记用于将Bean的属性输出到JSP页面。与相似,但提供了更多的灵活性和功能。 - **示例代码**: ```jsp (); request.setAttribute("student", student); %> <bean:...

    openbean的jar包

    1. **属性访问和设置**:提供PropertyUtils类,能够方便地对Bean的属性进行读写操作,无需关心属性的getter和setter方法。 2. **事件处理**:包含EventSetDescriptor类,用于描述Bean的事件集,简化事件发布和监听...

    commons-beanutils.jar.zip

    1. **属性拷贝**:BeanUtils.copyProperties()方法可以实现两个JavaBean对象之间的属性值拷贝,极大地减少了代码量。 2. **动态属性访问**:通过BeanUtils.getProperty()和BeanUtils.setProperty(),我们可以动态地...

    BeanUtils的应用

    在Java开发中,尤其是MVC框架如Struts中,`BeanUtils`经常用于对象之间的属性拷贝、类型转换以及方法调用等操作。让我们详细探讨一下`BeanUtils`的主要功能和方法。 ### BeanUtils核心功能 1. **对象克隆与属性...

    commons-beanutils (1.7.0 -1.9.2)6个

    - **属性拷贝**:`copyProperties()`方法使得能够将一个Bean的所有属性值复制到另一个Bean,大大简化了对象之间的数据迁移。 - **类型转换**:库内置了自动类型转换机制,当尝试将一个对象赋值给不匹配类型的Bean...

    Simple-Bean-Utility:bean 反射的简单实用程序,如 *setter 、 *getter 、 *populate 、 *copy 、*reset 、 *newInstance

    Simple-Bean-Utility提供了copy方法,可以实现深度拷贝,即创建一个新的Bean实例,并将源Bean的所有属性值复制过去,这样可以确保源对象的状态不受影响。 4. **Reset方法**:有时我们需要清空Bean的所有属性,使其...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    在Android开发中,数据对象的复制是一个常见的需求,特别是在处理数据持久化、界面状态恢复或者组件间通信时。本文将深入探讨Java中的浅复制和深复制,并以Android为背景,结合具体的实例讲解如何实现Java泛型深拷贝...

    封装对象工具类jar包.zip

    Apache BeanUtils是一个强大的Java Bean操作工具包,它简化了对Java对象属性的访问,使得开发者无需直接使用Java反射API即可方便地操作对象属性。在Java开发中,BeanUtils组件是Apache Commons项目的一部分,旨在...

Global site tag (gtag.js) - Google Analytics