package lizikj.bigwheel.common.vo.merchandise.util;

import java.lang.reflect.Field;

import lizikj.bigwheel.common.vo.merchandise.Merchandise;

public class ObjUtils {

/**
* 将src非空的属性注入到des中
* @param des
* @param src
*/
public static void copyPropertysWithoutNull(Object des, Object src){
Class<?> clazz = des.getClass();
Field[] srcfields=src.getClass().getDeclaredFields();
for(Field field:srcfields){
if(field.getName().equals("serialVersionUID"))
continue;
Field f;
try {
f = clazz.getDeclaredField(field.getName());
f.setAccessible(true);
field.setAccessible(true);
Object obj = field.get(src);
if(obj!=null)
f.set(des,obj);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {

Merchandise origin=new Merchandise();
origin.setBarCode("2");
origin.setBrowseNum(1);
origin.setCategoryId(1);
origin.setDescribe(null);
origin.setBrand(null);
Merchandise destination=new Merchandise();
destination.setBarCode(null);
destination.setCategoryId(2);
destination.setDescribe("5555");
destination.setBrand("ttt");
ObjUtils.copyPropertysWithoutNull(destination, origin);
System.out.println(destination.getBarCode());
System.out.println(destination.getDescribe());
System.out.println(destination.getBrand());
System.out.println(destination.getCategoryId());

}
}

忘记在那里找的了

import Java.lang.reflect.Field;

public class BeanUtils {

public static void copyPropertysWithoutNull(Object des, Object src) throws Exception{
        Class<?> clazz = des.getClass();
        Field[] srcfields=src.getClass().getDeclaredFields();
        for(Field field:srcfields){
            if(field.getName().equals("serialVersionUID"))
                continue;
            Field f =clazz.getDeclaredField(field.getName());
           field.setAccessible(true);
            Object obj = field.get(src);
            if(obj!=null)
                f.set(des,field.get(src));
        }
    }
}

来自:http://blog.csdn.net/wutongyu344/article/details/7353951

将src非空的属性注入到des中的更多相关文章

  1. 非空校验在oracle和mysql中的用法

    oracle判断是否为null nvl(参数1,参数2) :如果参数1为null则返回参数2,否则返回参数1 mysql判断是否为null ifnull(参数1,参数2) :如果参数1为null则返回 ...

  2. Java 遍历一个对象的属性 将非空属性赋值给另一个对象

    //将origin属性注入到destination中 public <T> void mergeObject(T origin, T destination) { if (origin = ...

  3. SpringBoot之Spring@Value属性注入使用详解

    在使用Spring框架的项目中,@Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性.在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下@Va ...

  4. 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)

    [优化]COUNT(1).COUNT(*).COUNT(常量).COUNT(主键).COUNT(ROWID).COUNT(非空列).COUNT(允许为空列).COUNT(DISTINCT 列名) 1. ...

  5. C# 9.0 新特性之参数非空检查简化

    阅读本文大概需要 1.5 分钟. 参数非空检查是缩写类库很常见的操作,在一个方法中要求参数不能为空,否则抛出相应的异常.比如: public static string HashPassword(st ...

  6. spring的属性注入和构造器注入

    spring在向IOC容器中注入Bean的时候,有三种注入方式: 属性注入构造器注入工厂方法注入平常中用到的前两种方法较多,下面对前两种方法举例.一.属性注入1.创建一个car类,作为注入的bean ...

  7. throw关键字和Objects非空判断_requireNonNull方法

    作用: 可以使用throw关键字在指定的方法中抛出指定的异常 使用格式: throw new xxxException("异常产生的原因") 注意: 1.throw关键字必须写在方 ...

  8. 什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字

    静态代码块?类加载就执行,最先执行 class demo{ static int num; static{ num=10; num*=3; System.out.println("haha& ...

  9. 单选按钮 设置required属性无法进行非空验证

    先看代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

随机推荐

  1. oracle10g在rh6上安装缺少libXtst*的包导致不能出OUI

    由于测试需要,今天在linux6.0上装了下oracle10g,确实是知道oracle10g已经不支持redhat5.0以后的版本了,但是根据自己以往在redhat5.0上装oracle的经验就鲁莽下 ...

  2. OFBIZ:启动之ContainerLoader

    ContainerLoader类实现StartupLoader接口,目的是装入各种Container容器. /** * An OFBiz container. A container can be t ...

  3. 神奇的C语言

    当然下面列出来的几点都是C的基础用法,只不过是这些用法可能平时不会被注意.所以很多东西第一次看到的时候,可能会觉得很怪异,但是细细想想就能很好的理解,也就能更好的清楚C语言的一些特性.但是在具体的编码 ...

  4. JavaWEB监听器

    1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象 ...

  5. c++操作符重载

    一.类型转换操作符(type conversion operator)[1] 参考: [1]. C++类型转换操作符(type conversion operator): http://www.cpp ...

  6. 使用虚幻引擎中的C++导论(四-内存管理与垃圾回收)(终)

    使用虚幻引擎中的C++导论(四)(终) 第一,这篇是我翻译的虚幻4官网的新手编程教程,原文传送门,有的翻译不太好,但大体意思差不多,请支持我O(∩_∩)O谢谢. 第二,某些细节操作,这篇文章省略了,如 ...

  7. ApexSql Log 2014.04.1133破解版&补丁

    已上传最新的2016版本,请移步: http://www.cnblogs.com/gsyifan/p/ApexSql_Log_2016_Crack.html 状态不好,鬼使补差的跑到服务器上updat ...

  8. regular expressions

  9. JS 計算文本域還能輸入多少個字符

    //輸入計數 //count:能輸入的數據總量    function Calculation(v, count) {        var span = $(v).next();        va ...

  10. iOS 原生态扫描二维码、条形码的功能。

    1.导入AVFoundatin.framework. 2.新建一个viewController,命名为QRScanViewController,用于扫描的界面. h文件如下,设置代理. #import ...