BeanUtils是个工具包,Apache公司所开发的开源工具包,良心企业重要是。代码中对javabean的操作很频繁, 所以Apache提供了一套开源的api,方便对javabean的操作!这个就是BeanUtils组件。
BeanUtils组件, 作用是简化javabean的操作!
用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件!
使用BeanUtils工具包我们需要引用的的Jar包有以下几种:
(1) BeanUtils相关包,主要是工具包
- commons-beanutils-1.8.3.jar 我们要使用的包
- commons-beanutils-1.8.3-javadoc.jar 文档包
- commons-beanutils-bean-collections-1.8.3.jar 我也不知道什么包
- commons-beanutils-core-1.8.3.jar 核心包
(2) Logic4j相关包,这是个日志包
- commons-logging.jar
- log4j.jar
下面就要开始使用这个工具包了
Admin类
public class Admin {
private int id;
private String name;
private String age;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
下面是开始使用BeanUtil进行简化操作:
beanutils拷贝对象属性
public void test() throws Exception {
//实现原理就是反射,对于基本数据类型会自动转换
Admin admin=new Admin(); //实例化一个对象
BeanUtils.copyProperty(admin, "name", "suny"); //拷贝name属性 三个参数是(对象,属性名,属性值)
BeanUtils.copyProperty(admin,"age",18); //拷贝age属性
BeanUtils.setProperty(admin,"id",1); //设置属性值
System.out.println(admin.getName());
System.out.println(admin.getAge());
System.out.println(admin.getId());
}
对象的拷贝
public void test2() throws Exception
{
Admin admin=new Admin(); //创建对象1
Admin admin2=new Admin(); //创建对象1
BeanUtils.copyProperty(admin,"name","suny"); //拷贝name属性
BeanUtils.copyProperties(admin2,admin); //把admin对象拷贝到aamin2对象中 (现在的对象,源对象)
System.out.println(admin2.getName());
}
map对象拷贝到对象中
public void test3() throws Exception
{
Admin admin=new Admin(); //实例化一对象
Map<String,Object> map=new HashMap<String,Object>(); //创建一个map对象集合
map.put("name", "Suny"); //推送map属性与值 ,map中的key一定要与javabean中的属性一样
map.put("age", 19); //推送map属性与值
BeanUtils.populate(admin, map); //把map对象拷贝到admin对象中
System.out.println(admin.getName());
System.out.println(admin.getAge());
}
模拟表单提交时的操作
public void test4() throws Exception{
String rec_name="suny"; //模拟从表单接受的name值
String rec_age="20"; //模拟从表单接收得 age值
Admin admin=new Admin(); //实例化对象
BeanUtils.copyProperty(admin, "name", rec_name); //请注意最后的name时候从表单接收的值
BeanUtils.copyProperty(admin, "age", rec_age); //这个age也是接收的值
System.out.println(admin.getName());
System.out.println(admin.getAge());
}
忘记说使用方法了,使用BenUtils组件的话要先导入包:
- 引入commons-beanutils-1.8.3.jar核心包
- 引入日志支持包: commons-logging-1.1.3.jar
如果缺少日志jar文件,就会报错报错:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:157)
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:117)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
at