`

【java】对象非空属性复制

    博客分类:
  • java
 
阅读更多
public abstract class BeanUtils extends org.springframework.beans.BeanUtils {  
    
	/**
	 * 功能 : 只复制source对象的非空属性到target对象上
	 * */
    public static void copyNoNullProperties(Object source, Object target) throws BeansException {  
      Assert.notNull(source, "Source must not be null");  
      Assert.notNull(target, "Target must not be null");  
      Class<?> actualEditable = target.getClass();  
      PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable);  
      for (PropertyDescriptor targetPd : targetPds) {  
        if (targetPd.getWriteMethod() != null) {  
          PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName());  
          if (sourcePd != null && sourcePd.getReadMethod() != null) {  
            try {  
              Method readMethod = sourcePd.getReadMethod();  
              if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) {  
                readMethod.setAccessible(true);  
              }  
              Object value = readMethod.invoke(source);  
              // 这里判断以下value是否为空 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等  
              if (value != null) {  
                Method writeMethod = targetPd.getWriteMethod();  
                if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {  
                  writeMethod.setAccessible(true);  
                }  
                writeMethod.invoke(target, value);  
              }  
            } catch (Throwable ex) {  
              throw new FatalBeanException("Could not copy properties from source to target", ex);  
            }  
          }  
        }  
      }  
    }  
  }  

 

分享到:
评论

相关推荐

    详解SpringBoot实现JPA的save方法不更新null属性

    这个方法可以将源对象的所有非空属性复制到目标对象中。 知识点 7: merge 方法 在更新对象时,需要使用 merge 方法将更新后的对象保存到数据库中。这个方法可以将更新后的对象保存到数据库中,并返回更新后的对象...

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

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

    java语言的26个细节

    4. **浅复制与深复制**:在Java中,复制对象有两种方式,浅复制和深复制。 - **浅复制**:只复制对象本身,但引用的对象不会被复制,它们仍然是原始对象的引用。如果对象内部有引用类型的属性,浅复制只会复制引用...

    commons-lang-2.1.zip

    - `ObjectUtils`和`BeanUtils`类提供了对象的创建、比较和复制功能,`BeanUtils.copyProperties()`方法可以便捷地将一个对象的属性复制到另一个对象。 6. **数组操作**: - `ArrayUtils`类提供了对数组的各种操作...

    Java文件操作源码大全

    Java文件操作是编程中常见的任务,涉及到文件的创建、删除、读取、写入以及更复杂的操作如复制、移动、加密、压缩等。以下是一些关键的Java文件操作知识点: 1. **创建文件夹**:使用`java.io.File`类的`mkdir()`或...

    文件管理系统---java

    你可以使用File对象来获取文件的属性,如路径、大小、最后修改时间等,也可以进行创建、删除、重命名等操作。 2. `java.nio.file.*`:这部分是Java的新I/O(New I/O)包,提供了更现代且高效的文件操作API。例如,`...

    Effecctive java 中文版

    《Effective Java》是Java开发领域的经典著作,由Joshua Bloch撰写,中文版为Java开发者提供了深入理解语言特性和最佳实践的机会。这本书包含了大量实用的编程建议,旨在帮助程序员写出更高效、更可靠、更可维护的...

    JavaFile文件操作

    在本项目中,"JavaFile文件操作"着重介绍了如何使用`File`类进行文件的基本操作,包括创建文件、复制文件或文件夹、删除文件或文件夹以及剪切文件或文件夹。以下是对这些功能的详细说明: 1. **创建文件** 使用`...

    java常用词语例子以及解释

    `CommonUtil`可能是一个工具类,提供了如`inputKeys()`、`notNull()`等方法,用于输入模拟、断言非空等操作。 ```java HtmlTableCell cell = ...; String cellText = cell.getText(); ``` #### 线程局部变量与系统...

    commons-lang-2.1.tar.gz

    比如ObjectUtils,它的`isNull()`和`isNotNull()`方法可以用来判断对象是否为null,这样可以在执行方法或访问属性之前先确保对象的有效性。此外,BeanUtils类提供了一种方便的方式来复制属性,同时可以设定是否忽略...

    java基础笔记(初学者)

    这个方法首先检查传入的 `user` 是否非空,然后逐个将 `User` 中的属性值复制到 `UserVo` 中。这体现了面向对象编程中的数据封装概念,通过创建一个表示同一数据但接口不同的新类,可以更好地控制数据的访问和修改。...

    java文件操作大全.pdf

    11. 写入属性:Java 提供了 `java.util.Properties` 类来处理配置文件,可以读取、修改和保存属性。 12. 枚举一个文件夹中的所有文件:`list()` 或 `listFiles()` 方法可以返回文件夹下的文件名列表,`listFiles()`...

    28个java常用的工具类源码

    13. **JSON解析工具类**:如JsonUtils,可以将Java对象与JSON字符串之间互相转换,常用于数据交换。 14. **XML处理工具类**:如XmlUtils,方便解析和生成XML文档,处理XML数据。 15. **MD5/SHA加密工具类**:如...

    java文件操作大全[整理].pdf

    11. **写入属性**:Java不直接支持写入文件属性,但可以通过第三方库如Apache Commons IO的`FileUtils.setAttribute()`方法来实现。 12. **枚举一个文件夹中的所有文件**:可以使用`listFiles()`方法获取指定目录下...

    commons-lang-1.0.tar.gz

    10. **系统属性**:`SystemUtils`提供了获取和操作Java系统属性的方法,可以方便地判断运行环境等信息。 在服务器端开发中,非空校验是非常重要的,因为无效或为空的数据可能导致程序出错。Apache Commons Lang ...

    JAVA对文件操作详细讲解

    - **复制**:可以使用 `java.nio.file.Files.copy()` 或自定义逻辑实现文件复制,考虑是否保留属性(如修改时间)。 - **移动**:`Files.move()` 方法可移动文件,支持原子性操作,避免在移动过程中文件丢失。 6....

    java文件操作

    以上就是Java文件操作的主要知识点,这些内容涵盖了文件和目录的基本操作,以及高效读写、对象持久化、文件复制、过滤和监控等多个方面。通过理解和掌握这些知识点,开发者能够编写出灵活、安全的文件操作代码。

    java文件上传和下载

    - **`Paths`**: 该类提供静态方法来获取`Path`对象,`Path`对象用于表示文件系统的路径。 - **`Files`**: 提供了大量静态方法用于执行文件系统操作,如创建、删除、复制文件或目录等。 - **`Path`**: 代表文件系统中...

    hibernate动态更新

    然而,`dynamic-update`的局限在于,一旦对象脱离了Session(例如,对象被序列化或复制),它就无法识别哪些字段已经被修改,因此`dynamic-update`就无法发挥作用。 为了解决这个限制,可以采用如上代码所示的Java...

    俄罗斯方块java源代码

    Java以其跨平台的特性、丰富的类库和面向对象的设计理念,成为实现此类游戏的理想选择。 首先,我们要理解游戏的基本逻辑。俄罗斯方块的核心是七种不同形状的方块,每种方块由四个单元格组成,它们以不同的方式旋转...

Global site tag (gtag.js) - Google Analytics