BeanUtils常用方法记录

这个依赖包,类名全称

org.apache.commons.beanutils.BeanUtils

1.BeanUtils用处:

BeanUtils是Apache Commons组件的成员之一,
主要用于简化JavaBean封装数据的操作。​

简化反射封装参数的步骤,给对象封装参数。
好处: BeanUtils给对象封装参数的时候会进行类型自动转换。

2.JavaBean:

//JavaBean就是一个类,但该类需要满足以下三个条件:
​1. 类//必须使用public修饰。
​2. 提供无参数的构造器。
​3. 提供getter和setter方法访问属性。

3.BeanUtils的常用方法:

BeanUtils.copyProperties(Object o1,Object o2);

场景:

如果你有两个具有很多相同属性的JavaBean,一个很常见的情况就是Struts里的PO对象(持久对象)和对应的ActionForm。例如:一个用户注册页面,有一个User实体类和一个UserActionForm,我们一般会在Action里从ActionForm构造一个PO对象,传统的方式是使用类似下面的语句对属性逐个赋值:

// 获取 ActionForm 表单数据   
UserActionForm uForm = (UserActionForm) form;   
// 构造一个User对象   
User user = new User();   
// 逐一赋值   
user.setUsername(uForm.getUsername);   
user.setPassword(uForm.getPassword);   
user.setAge(uForm.getAge);  

使用Bean工具类方法:

// 获取 ActionForm 表单数据   
UserActionForm uForm = (UserActionForm) form;   
// 构造一个User对象   
User user = new User();   
// 赋值   
BeanUtils.copyProperties(user, uForm); 

跟以上的单独设置属性效果一样,注意:只有属性名名相同且类型一致的才会赋值成功。如果User和UserActionForm 间存在名称不相同的属性,则BeanUtils不对这些属性进行处理,需要手动处理。

 

public static void setProperty(Object bean, String name, Object value);
给指定对象bean的指定name属性赋值为指定值value。 //如果指定的属性不存在,则什么也不发生。

 

public static String getProperty(Object bean, String name);获取指定对象bean指定name属性的值。 //如果指定的属性不存在,则会抛出异常。 注意:当属性的类型是数组类型时,获取到的值数组中的第一个值。

public static void populate(Object bean, Map<String, ? extends Object> properties);将一个Map集合中的数据封装到指定对象bean中 注意:对象bean的属性名和Map集合中键要相同。例子使用如下:

...
User s = new User();
//创建Map集合
Map<String,String> map = new HashMap<String, String>();
map.put("id", 1);
map.put("name","小明");
map.put("age",5);
//给对象封装数据 , 数据全部都在Map中。
User s = new User();
//把map中的数据封装到对象上。
BeanUtils.populate(s, map);
System.out.println("用户信息"+s);

注意:对象bean的属性名和Map集合中键要相同,数据类型要一致。

 

而且在Bean中一定要设置了get和set方法,1. Beanutils给对象设置属性的时候是依赖了setXXX方法。 2. BeanUtils获取对象的属性时依赖的是getXXX方法。 

另外,导包时一定要导对包,如果导的是org.springframework.beans.BeanUtils这个spring的类包,则copyProperties()方法是前面的对象给后面的对象赋值。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值