Apache-Commons-BeanUtils

Commons-BeanUtils 基于Java 反射来完成对Bean的一些操作。常用于对于JavaBean进行各种操作,克隆对象,属性等等。比较简单。

###包介绍~~~~

  • org.apache.commons.beanutils – 核心包,定义一组Utils类和需要用到的接口规范
  • org.apache.commons.beanutils.converters – 转换String到需要类型的类,实现Converter接口
  • org.apache.commons.beanutils.locale – beanutils的locale敏感版本
  • org.apache.commons.beanutils.locale.converters – converters的locale敏感版本
  • org.apache.commons.collections – beanutils使用到的Collection类

###API分类

  • 复制一个JavaBean的实例-- BeanUtils.cloneBean()

  • 在一个JavaBean的两个实例之间复制属性-- BeanUtils.copyProperties()
    BeanUtils.copyProperty()

  • 为一个JavaBean的实例设置成员变量(属性)值-- BeanUtils.populate()
    BeanUtils.setProperty()
    PropertyUtils.setSimpleProperty

  • 从 一个一个JavaBean的实例中读取成员变量(属性)的值 -- BeanUtils.getArrayProperty()
    BeanUtils.getIndexedProperty()
    BeanUtils.getMappedProperty()
    BeanUtils.getNestedProperty()
    BeanUtils.getSimpleProperty()
    BeanUtils.getProperty()
    BeanUtils.describe()
    PropertyUtils.getSimpleProperty
    PropertyUtils.getIndexedProperty

###依赖:

<dependency>  
    <groupId>commons-beanutils</groupId>  
    <artifactId>commons-beanutils</artifactId>  
    <version>1.9.3</version>  
</dependency>  

###示例 对象定义

public class BeanutilCopyVo {
    private long id;
    private int age;
    private boolean sex;
    private float weight;
    private double height;
    private short classes;
    private String name;
    private Set<String> nicks;
    private Date birthDay;
    ...
}

对象设值.

    private static BeanutilCopyVo getVo() {
        BeanutilCopyVo vo = new BeanutilCopyVo();
        vo.setAge(1);
        vo.setClasses((short) 2);
        vo.setHeight(3d);
        vo.setWeight(4f);
        vo.setName("name");
        vo.setId(0l);
        vo.setSex(true);
        vo.setBirthDay(new Date());
        Set<String> nicks = new HashSet<String>();
        nicks.add("1");
        nicks.add("2");
        nicks.add("3");
        vo.setNicks(nicks); 
        return vo;
    }

测试

    @Test
    public void testCopySame() {
        BeanutilCopyVo vo2 = new BeanutilCopyVo();
        try {
            BeanUtils.copyProperties(vo2, vo); //拷贝整个对象
            assertEquals(1, vo2.getAge());
            assertEquals("1", BeanUtils.getProperty(vo2, "age")); //获取一个属性
            BeanUtils.setProperty(vo2, "age", 2); //设置一个属性
            assertEquals("2", BeanUtils.getProperty(vo2, "age"));
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            //LogUtil.get(this.getClass()).error(e);
        }
    }

    @Test
    public void testCopyProperty() {
        BeanutilCopyVo vo2 = new BeanutilCopyVo();
        try {
            BeanUtils.copyProperty(vo2, "age", "22");
            assertEquals("22", BeanUtils.getProperty(vo2, "age"));
            ConvertUtils.register(new BeanutilDateConverter(), Date.class); //特殊属性时间的处理 
            BeanUtils.copyProperty(vo2, "birthDay", "2016-09-11"); 
            assertNotNull(BeanUtils.getProperty(vo2, "birthDay"));
//            assertEquals("2016-09-11", BeanUtils.getProperty(vo2, "birthDay"));
        } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            //LogUtil.get(this.getClass()).error(e);
        }
    }
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.beanutils.Converter;

import com.zx.common.log.LogUtil;

public class BeanutilDateConverter implements Converter {

    private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

    /** 
     *  要将字符串的value转换为java.util.Date类型的值 
     *  @param targetClass 第一个参数 是你的目标类型 
     *   @param value   要转换的值, 
     *   @return   把要转回的值,返回出去就ok了 
     */
    @SuppressWarnings({"unchecked", "rawtypes"})
    public Date convert(Class targetClass, Object value) {

        if (targetClass != Date.class) {
            return null;
        }
        try {
            if (value instanceof String) {
                String v = (String) value;
                return format.parse(v);
            }
        } catch (ParseException e) {
            LogUtil.get(this.getClass()).error(e);
        }

        return null;
    }

}

2016-11-06 09:29:52 星期日

转载于:https://my.oschina.net/kenzheng/blog/782462

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值