BeanUtils介绍
- BeanUtils是Apache commens组件里面的成员,由Apache提供的一套开源api,用于简化对javaBean的操作,能够对基本类型自动转换。
- 功能:封装数据;
- 我们知道一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致了大量的get/set代码堆积,增加了代码长度和阅读代码的难度,而BeanUtils可以对Bean中的属性进行封装。
JavaBean
- javaBean实质就是java类,只不过是遵循了某种规范的java类。
- 遵循的规范:
- 类必须用public来修饰;
- 必须具有一个无参的构造方法
- 属性必须私有化
- 私有化的属性必须通过public类型的方法来暴露,也就是说要出现setXXX()、getXXX()或者isXXX()的方法;
- JavaBean示例:
public class Student {
private String name;
private String id;
private int age;
private String sex;
private Date d;
public Student() {
super();
}
public Date getD() {
return d;
}
public void setD(Date d) {
this.d = d;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student [name=" + name + ", id=" + id + ", age=" + age
+ ", sex=" + sex + ", d=" + d + "]";
}
}
配置BeanUtils
- 下载BeanUtils:官网,下载好组件,再到项目里面引入jar文件。
- 导入核心包
- commons-beanutils-1.9.3.jar
- commons-logging-1.2.jar
- 注意:当缺少日志jar包,会出现如下的报错情况。java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
- logging组件的下载地址
BeanUtils方法
- 把orig中的值copy到dest中:
public void copyProperties(java.lang.Object dest, java.lang.Object orig)
- 把Bean的属性值放入到一个Map里面:
public java.util.Map describe(java.lang.Objectbean)
- 把properties里面的值放入bean中:
public void populate(java.lang.Object bean, java.util.Mapproperties)
;
- 设置Bean对象的名称为name的property的值为value:public void setProperty(java.lang.Object bean, java.lang.Stringname,java.lang.Object value);
- 取得bean对象中名为name的属性的值:
public String getProperty(java.lang.Object bean, java.lang.Stringname)
;
- map数据封装到javaBean示例:
- 注意:要map中的数据封装到JavaBean中去,需要map中的key与JavaBean里面的私有化的属性要相匹配
@Test
public void test() throws Exception {
//创建对象
Student s2=new Student();
//1.map的数据拷贝到对象中去
Map<String,Object> map = new HashMap<String,Object>();
map.put("id","12233");
map.put("name","老王");
map.put("sex","男");
BeanUtils.populate(s2, map);
System.out.println(s2);
}