Commons beanutils组件简介
CommonsBeanutils是Apache开源组织提供的用于操作JAVABEAN的工具包。使用commonsbeanutils,我们可以很方便的对bean对象的属性进行操作。今天为大家介绍一下该包的常用方法。
1.什么是BeanUtils
程序中对javabean的操作很频繁,所以apache提供了一套开源的api,方便对javabean的操作,即BeanUtils组件。
2.BeanUtils的作用
简化javabean的操作。
在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的。
3.BeanUtils依赖包
用户可以从www.apache.org下载BeanUtils组件,然后再在项目中引入jar文件。
(1)BeanUtils相关包
commons-beanutils-1.8.3.jar
commons-beanutils-1.8.3-javadoc.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
注:如果缺少日志jar文件,报错:
java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory atorg.apache.commons.beanutils.ConvertUtilsBean.(ConvertUtilsBean.java:157) atorg.apache.commons.beanutils.BeanUtilsBean.(BeanUtilsBean.java:117) atorg.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68) at
二:实例—基本用法
用法1:对象属性的拷贝
BeanUtils.copyProperty(admin,"userName","jack"); BeanUtils.setProperty(admin,"age",18);
用法2:对象的拷贝
BeanUtils.copyProperties(newAdmin,admin);
用法3:map数据拷贝到javabean中
注意:map中的key要与javabean的属性名称一致
BeanUtils.populate(adminMap,map);
代码举例
javabean类
packagecom.beanutils.test;
importjava.util.Date;
/**
*1.bean类设计
*@authorCharlie.chen
*
*/
publicclassAdmin{
privateintid;
privateStringuserName;
privateStringpwd;
privateintage;
privateDatebirth;
publicDategetBirth(){
returnbirth;
}
publicvoidsetBirth(Datebirth){
this.birth=birth;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicStringgetPwd(){
returnpwd;
}
publicvoidsetPwd(Stringpwd){
this.pwd=pwd;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetUserName(){
returnuserName;
}
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
@Override
publicStringtoString(){
return"Admin[age="+age+",birth="+birth+",id="+id
+",pwd="+pwd+",userName="+userName+"]";
}
}
通过BeanUtils对javabean的基本操作
@Test
publicvoidtest1()throwsException{
//a.基本操作
Adminadmin=newAdmin();
//admin.setUserName("Charlie.chen");
//admin.setPwd("999");
//b.BeanUtils组件实现对象属性的拷贝
BeanUtils.copyProperty(admin,"userName","jack");
BeanUtils.setProperty(admin,"age",18);
//总结1:对于基本数据类型,会自动进行类型转换!
//c.对象的拷贝
AdminnewAdmin=newAdmin();
BeanUtils.copyProperties(newAdmin,admin);
//d.map数据,拷贝到对象中
AdminadminMap=newAdmin();
Mapmap=newHashMap();
map.put("userName","Jerry");
map.put("age",29);
//注意:map中的key要与javabean的属性名称一致
BeanUtils.populate(adminMap,map);
//测试
System.out.println(adminMap.getUserName());
System.out.println(adminMap.getAge());
}
三:实例—日期类型的拷贝
需要注册日期类型转换器,2种方式参见下面代码:
//1.自定义日期类型转换器
@Test
publicvoidtest2()throwsException{
//模拟表单数据
Stringname="jack";
Stringage="20";
Stringbirth="";
//对象
Adminadmin=newAdmin();
//注册日期类型转换器:1,自定义的方式
ConvertUtils.register(newConverter(){
//转换的内部实现方法,需要重写
@Override
publicObjectconvert(Classtype,Objectvalue){
//判断
if(type!=Date.class){
returnnull;
}
if(value==null||"".equals(value.toString().trim())){
returnnull;
}
try{
//字符串转换为日期
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
returnsdf.parse(value.toString());
}catch(ParseExceptione){
thrownewRuntimeException(e);
}
}
},Date.class);
//把表单提交的数据,封装到对象中
BeanUtils.copyProperty(admin,"userName",name);
BeanUtils.copyProperty(admin,"age",age);
BeanUtils.copyProperty(admin,"birth",birth);
//------测试------
System.out.println(admin);
}
//2.使用提供的日期类型转换器工具类
@Test
publicvoidtest3()throwsException{
//模拟表单数据
Stringname="jack";
Stringage="20";
Stringbirth=null;
//对象
Adminadmin=newAdmin();
//注册日期类型转换器:2,使用组件提供的转换器工具类
ConvertUtils.register(newDateLocaleConverter(),Date.class);
//把表单提交的数据,封装到对象中
BeanUtils.copyProperty(admin,"userName",name);
BeanUtils.copyProperty(admin,"age",age);
BeanUtils.copyProperty(admin,"birth",birth);
//------测试------
System.out.println(admin);
}
总结
以上所述是小编给大家介绍的CommonsBeanUtils组件的相关内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!