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组件的相关内容,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!