实体拷贝

这篇博客介绍了如何使用Apache Commons BeanUtils库解决Java Bean在拷贝过程中遇到的日期属性为NULL的问题。通过注册自定义转换器,允许源和目标Bean的日期类型属性值为空。
摘要由CSDN通过智能技术生成

代码如下 导包  org.apache.commons.beanutils

package com.util;
import java.lang.reflect.InvocationTargetException;

import org.apache.commons.beanutils.ConvertUtils;

/**
 * 实体拷贝时候关于Date为null 的解决
 * @author lenovo
 *
 */
public class BeanUtilEx {
	
	private BeanUtilEx() {}

    static {
        // 注册sql.date的转换器,即允许BeanUtils.copyProperties时的源目标的sql类型的值允许为空
        ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlDateConverter(null), java.sql.Date.class);
        ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlDateConverter(null), java.util.Date.class);
        ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlTimestampConverter(null),java.sql.Timestamp.class);
        // 注册util.date的转换器,即允许BeanUtils.copyProperties时的源目标的util类型的值允许为空
    }
    
    public static void copyProperties(Object target, Object source) throws IllegalAccessException, InvocationTargetException {
    	// 支持对日期copy  BeanUtils.copyProperties(a,  b); b拷贝到a 
    	org.apache.commons.beanutils.BeanUtils.copyProperties(target, source);

    }
}

测试方法如下:

package com.testCode;

import java.lang.reflect.InvocationTargetException;

import com.entity.Area;
import com.util.BeanUtilEx;

public class Test1 {
	public static void main(String[] args) throws IllegalAccessException, InvocationTargetException {
		Area taregt = new Area();
		Area source = new Area();
		source.setId(1);
		source.setCity("成都");
		source.setProvince("");
		//BeanUtils.copyProperties(a,  b); b拷贝到a
		BeanUtilEx.copyProperties(taregt, source);
		System.out.println(taregt);
	}
}

控制台输出如下:

Area [id=1, province=, city=成都, district=null, postcode=null, abbrecode=null, citycode=null]

解决的实体拷贝属性NULL的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值