这个依赖包,类名全称
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()方法是前面的对象给后面的对象赋值。