java beanUtils框架

劍握在手發表於2013-11-26

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

 

 

相關文章