beanUtils是Apache覺得sun公司的內省不夠爽,自己又開發了一套可以操作JavaBean的API
所以beanUtils是第三方jar包,使用beanUtils要導包:
在工程目錄下新建一個資料夾“lib”,將下載下來的commons-beanutils包匯入,beanutils中有個大jar包,還有collections和core兩個jar包,後兩個jar包加起來就組成了前者。我們把那個大點的包拿過來放lib下。 另外beanutils jar包在工作中需要一個log4j的日誌記錄器commons-logging.jar的支援,它也要被拿過來放lib下。
然後把這兩個jar包,把他們Add to Build Path中,加到開發環境中去。eclipse中滑鼠右鍵就可以做到。
程式碼:
import org.apache.commons.beanutil.BeanUtils;//導包寫這個
……
Person p = new Person();
BeanUtils.setProperty(p,"name","110");//直接將Person的物件p中的私有的name屬性設定成110,如果這裡的name屬性是個整型,那麼BeanUtils可以自動將字串轉換成整型。轉化只支援八種基本型別。如果想自動轉換別的型別,比如Date,需要註冊BeanUtils轉換器,讓它按照我們的規則轉換一下。
註冊日期轉換器辦法如下:
ConvertUtils.register(new Converter(){
public Object convert(Class type,Object value){
if(value == null){
return null;
}
if(!(value instanceof String)){
throw new ConversionException("只支援String型別轉換");
}
String str = (String)value;
if(str.trim().equals(""){
return null;
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try{
return df.parse(str);
}catch(ParseException e){
throw new RuntimeExcepion(e);//異常鏈不能斷,要把e弄出去讓別人看
//throw new ConversionException("轉換失敗");
}
}
}
,Date.class);
還可以這樣:
ConvertUtils.register(new DateLocaleConverter(),Date.class);//這個轉換器轉空會報錯。。
填充map到Bean:
Map<String,String> map = new HashMap<String,String>();
map.put("name","110");//屬性不一致會填不進去,但是不會報錯
map.put("屬性","值");
Person bean = new Person();
BeanUtils.populate(bean,map);
更多內容請參閱第三方API